错误:将 sql 脚本应用到数据库时出错,错误:1064 检查 Mariadb 服务器手册以获取正确的语法
Posted
技术标签:
【中文标题】错误:将 sql 脚本应用到数据库时出错,错误:1064 检查 Mariadb 服务器手册以获取正确的语法【英文标题】:Error:There was an error applying sql script to database error , Error:1064 check Mariadb server manual for correct syntax 【发布时间】:2020-08-30 13:39:40 【问题描述】:嘿,这是我之前工作正常的 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 脚本应用到数据库时出错。
当我尝试创建表格视图时出现这种情况, 如果我尝试直接执行该语句,我会收到一条错误消息:
Error:1064 You have an error in sql syntax 检查与您的 mariadb 服务器版本相对应的手册,以便在 ' 附近使用正确的语法
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)
附近使用的正确语法
【问题讨论】:
你在错误信息变得有趣之前就将其截断了 显示完整的错误信息!!! 我看到 2 个可能的问题 - “外键格式不正确”和“总字符字段长度太长”。 如何纠正你所说的外键问题@Akina 添加到问题中:1)完整的错误消息文本; 2)project.main1
表的 DDL 脚本。
【参考方案1】:
您使用定义为的字段创建外键
`email` VARCHAR(70) NOT NULL
而您要引用的字段定义为
`email` VARCHAR(100) NOT NULL
当然不能创建引用,因为长度不相等。
可能的解决方案:
更改 viewtable
中的字段定义并将其长度从 70 个字符增加到 100 个(首选);
更改 main1
中的字段定义并将其长度从 100 个字符减少到 70 个;
通过表达式email(70)
在main1
中创建附加索引并引用它。或者通过将约束定义更改为
CONSTRAINT `email`
FOREIGN KEY (`email`)
REFERENCES `project`.`main1` (`email`(70))
ON DELETE CASCADE
ON UPDATE CASCADE
在这种情况下,将自动创建提到的索引。
【讨论】:
嘿,即使在这样做之后我也遇到了同样的错误,但我尝试删除 INDEXemail_idx
(email
ASC) VISIBLE,它确实有效
因为 VISIBLE
不是受支持的 MariaDB 语法。 fiddle
顺便说一句 MariaDB server manual 为 create table
在上一个链接中。以上是关于错误:将 sql 脚本应用到数据库时出错,错误:1064 检查 Mariadb 服务器手册以获取正确的语法的主要内容,如果未能解决你的问题,请参考以下文章
安装sql 2008时出错,出错信息: sql server 安装程序遇到以下错误 未将对象引用设置到对象的实例。。