错误:将 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

在这种情况下,将自动创建提到的索引。

【讨论】:

嘿,即使在这样做之后我也遇到了同样的错误,但我尝试删除 INDEX email_idx (email ASC) VISIBLE,它确实有效 因为 VISIBLE 不是受支持的 MariaDB 语法。 fiddle 顺便说一句 MariaDB server manual 为 create table 在上一个链接中。

以上是关于错误:将 sql 脚本应用到数据库时出错,错误:1064 检查 Mariadb 服务器手册以获取正确的语法的主要内容,如果未能解决你的问题,请参考以下文章

安装sql 2008时出错,出错信息: sql server 安装程序遇到以下错误 未将对象引用设置到对象的实例。。

将值提高到 n 次方时 SQL-Oracle 代码出错 - 需要帮助

将 SQL 部署脚本构建到应用程序中?

GG运行脚本出错,求助各路大神解惑!~!~

上传到应用商店时出错,没有错误代码

在数据库“天气”上执行 SQL 查询时出错:“(”附近:语法错误