嘿,这是我的sql,它以前运行得很好,但是我不小心删除了这个表,并再次创建了这个表,并向我展示了这个错误。有人能帮我一下吗?
CREATE TABLE `project`.`viewtable` (
`contact` BIGINT(10) NOT NULL,
`date` DATE NOT NULL,
`age` INT NOT NULL,
`gender` VARCHAR(45) NOT NULL,
`ms` VARCHAR(45) NOT NULL,
`kids` INT NOT NULL,
`religion` VARCHAR(45) NOT NULL,
`qual` VARCHAR(45) NOT NULL,
`img` LONGBLOB NOT NULL,
`ht` VARCHAR(45) NOT NULL,
`wt` VARCHAR(45) NOT NULL,
`wrkp` VARCHAR(45) NOT NULL,
`city` VARCHAR(45) NOT NULL,
`comp` VARCHAR(45) NOT NULL,
`addr` VARCHAR(200) NOT NULL,
`diet` VARCHAR(45) NOT NULL,
`wrkpl` VARCHAR(45) NOT NULL,
`sal` VARCHAR(45) NULL,
`email` VARCHAR(70) NOT NULL,
`password` VARCHAR(45) NOT NULL,
PRIMARY KEY (`contact`),
INDEX `email_idx` (`email` ASC) VISIBLE,
CONSTRAINT `email`
FOREIGN KEY (`email`)
REFERENCES `project`.`main1` (`email`)
ON DELETE CASCADE
ON UPDATE CASCADE);
我发现了一个错误:
错误:将sql脚本应用于数据库时出错。
当我尝试创建表视图时,就会出现这种情况,如果我试图直接执行该语句,则会收到一个错误消息:
错误:1064您在sql语法中有一个错误,请检查与ur mariadb服务器版本相对应的手册,以便右syntx使用near‘
project.main1有
CREATE TABLE `project`.`main1` (
`name` VARCHAR(50) NOT NULL,
`email` VARCHAR(100) NOT NULL,
PRIMARY KEY (`email`));
错误1064:您的SQL语法出现错误;请检查与MariaDB服务器版本对应的手册,以获得在“
CONSTRAINT `email` FOREIGN KEY (`email`) REFERENCES `project`.`main1`' at line 23 SQL Statement: CREATE TABLE `project`.`viewtable` ( `contact` BIGINT(10) NOT NULL, `date` DATE NOT NULL, `age` INT NOT NULL, `gender` VARCHAR(45) NOT NULL, `ms` VARCHAR(45) NOT NULL, `kids` INT NOT NULL, `religion` VARCHAR(45) NOT NULL, `qual` VARCHAR(45) NOT NULL, `img` LONGBLOB NULL, `ht` VARCHAR(45) NOT NULL, `wt` VARCHAR(45) NOT NULL, `wrkp` VARCHAR(45) NOT NULL, `city` VARCHAR(45) NOT NULL, `comp` VARCHAR(45) NOT NULL, `addr` VARCHAR(200) NOT NULL, `diet` VARCHAR(45) NOT NULL, `wrkpl` VARCHAR(45) NOT NULL, `sal` VARCHAR(45) NULL, `email` VARCHAR(100) NOT NULL, `password` VARCHAR(45) NOT NULL, PRIMARY KEY (`contact`), INDEX `email_idx` (`email` ASC) VISIBLE, CONSTRAINT `email` FOREIGN KEY (`email`) REFERENCES `project`.`main1` (`email`) ON DELETE CASCADE ON UPDATE CASCADE)
”附近使用的正确语法
发布于 2020-05-14 06:36:14
使用以下字段创建外键:
`email` VARCHAR(70) NOT NULL
而要引用的字段定义为
`email` VARCHAR(100) NOT NULL
当然,不能创建引用,因为长度不相等。
可能的解决办法:
viewtable
中的字段定义,并将main1
中的字段定义从70个字符增加到100个字符,并将其长度从100个字符减少到70个;email(70)
在main1
中创建附加索引并引用该索引。或通过将约束定义更改为获得相同的结果。
CONSTRAINT `email`
FOREIGN KEY (`email`)
REFERENCES `project`.`main1` (`email`(70))
ON DELETE CASCADE
ON UPDATE CASCADE
在这种情况下,所提到的索引将自动创建。
https://stackoverflow.com/questions/61790269
复制相似问题