0
MySQL的CHAR外键的结果我有以下表设置:1215年错误
CREATE TABLE USER (
id CHAR(36) NOT NULL,
user_id VARCHAR(200) NOT NULL,
password VARCHAR(200) NOT NULL,
email VARCHAR(500) NOT NULL,
enabled_ind INTEGER(1) NOT NULL,
other_user_oid INTEGER(19),
other_user_pod VARCHAR(10),
last_changed_date TIMESTAMP NOT NULL,
last_changed_by VARCHAR(255) NOT NULL,
created_date TIMESTAMP NOT NULL,
created_by VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY ix_user_id (user_id),
UNIQUE KEY ix_user_email (email),
UNIQUE KEY ix_user_pod (other_user_oid, other_user_pod)
)
ENGINE = InnoDB
CHARACTER SET = utf8
COLLATE = utf8_bin;
CREATE TABLE ROLE (
id CHAR(36) NOT NULL,
name VARCHAR(50) NOT NULL,
last_changed_date TIMESTAMP NOT NULL,
last_changed_by VARCHAR(255) NOT NULL,
created_date TIMESTAMP NOT NULL,
created_by VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY ix_role_name(name)
)
ENGINE = InnoDB
CHARACTER SET = utf8
COLLATE = utf8_bin;
CREATE TABLE USER_ROLES (
user_id CHAR(36) NOT NULL,
role_id CHAR(36) NOT NULL,
last_changed_date TIMESTAMP NOT NULL,
last_changed_by VARCHAR(255) NOT NULL,
created_date TIMESTAMP NOT NULL,
created_by VARCHAR(255) NOT NULL,
INDEX (user_id),
INDEX (role_id),
FOREIGN KEY (user_id)
REFERENCES user (id)
ON UPDATE CASCADE,
FOREIGN KEY (role_id)
REFERENCES role (id)
ON UPDATE CASCADE
)
ENGINE = InnoDB
CHARACTER SET = utf8
COLLATE = utf8_bin;
当我去创建USER_ROLES表,我得到一个“无法添加外键约束”的错误。我在stackoverflow上发现的大多数类似问题似乎都与字符集和整理有关,但从我所知道的情况来看,我正确地做到了这一点,所以我不太确定问题所在。在这儿。一段时间以来,我一直在尝试一堆不同的东西,但似乎没有任何工作。
任何帮助将不胜感激!
奇怪......我想知道为什么它不适合我。也许这是一个版本问题。我使用BCrypt散列所有密码。 – cloudwalker