好吧,我不明白为什么,但是 FK 的最后一行有错误。MB 我什么都没看到……不知道……
CREATE DATABASE aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE aaa.acc (
uid INT(5) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT PRIMARY Key,
email VARCHAR(30) NOT NULL,
pwd VARCHAR(40) NOT NULL,
h VARCHAR(50) NOT NULL,
hex DATETIME NOT NULL,
lrt DATETIME NOT NULL,
t VARCHAR(50) NOT NULL,
ip VARCHAR(38) NOT NULL,
ul VARCHAR(50) NOT NULL,
phone VARCHAR(15) NOT NULL,
pcc INT(1) NULL,
rs VARCHAR(10) NULL,
rc INT(2) UNSIGNED NULL,
UNIQUE (email),
INDEX (h),
INDEX (t)
)ENGINE=INNODB;
CREATE TABLE aaa.scor (
uid INT(5) UNSIGNED ZEROFILL NOT NULL,
scr DECIMAL(6,1) UNSIGNED NULL,
t INT(6) UNSIGNED NULL,
avg DECIMAL(1,1) UNSIGNED NULL,
CONSTRAINT FOREIGN KEY (uid) REFERENCES acc(uid) ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE=INNODB;
CREATE TABLE aaa.prof (
uid INT(5) UNSIGNED ZEROFILL NOT NULL,
photo VARCHAR(2) NULL,
name VARCHAR(30) NULL,
mname VARCHAR(30) NULL,
sname VARCHAR(30) NULL,
bday DATE NULL,
nat VARCHAR(32) NULL,
olan VARCHAR(50) NULL,
scr DECIMAL(1,1) UNSIGNED NULL,
s1 VARCHAR(15) NULL,
s2 VARCHAR(15) NULL,
s3 VARCHAR(15) NULL,
s4 VARCHAR(15) NULL,
CONSTRAINT FOREIGN KEY (uid) REFERENCES acc(uid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (scr) REFERENCES scor(avg) ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE=INNODB;
错误:
2022-03-01 10:31:52 0x2bb0 表 aaa.prof 的外键约束出错:外键 (scr) REFERENCES scor(avg) ON DELETE CASCADE ON UPDATE CASCADE)ENGINE=INNODB: 在引用中找不到索引被引用列作为第一列出现的表,或者表中的列类型与被引用表的约束不匹配。请注意,使用 >= InnoDB-4.1.12 创建的表中 ENUM 和 SET 的内部存储类型发生了变化,并且旧表中的此类列不能被新表中的此类列引用。请参考 https://mariadb.com/kb/en/library/foreign-keys/正确的外键定义。使用外键约束创建表 aaa.prof 失败。引用的表中没有索引,其中引用的列显示为“FOREIGN KEY (scr) REFERENCES scor(avg) ON DELETE CASCADE ON UPDATE CASCADE)ENGINE=INNODB”附近的第一列。
对了,任何人都可以解释一下吗?因为这对我来说没有意义......对于其他表格有效但不适用于这个