【问题标题】:Syntax problem on basic INSERT statements基本 INSERT 语句的语法问题
【发布时间】:2019-03-17 04:13:08
【问题描述】:
INSERT INTO Table1 (Column1, Column2)
VALUES ('bbbbbbb', 'aaa');

INSERT INTO Table2 (Column1, Column2, Column3)
VALUES ('bbbbb', 'hhhh', 'eeee');

我正在使用网站检查我的 SQL 语法:https://www.eversql.com/sql-syntax-check-validator/。当 SQL 工作时,它显示一个错误:

您的 SQL 语法有错误;似乎错误是:'INSERT `INTO Table2 (Column1, Column2, Column3) VALUES ('bbbbb', 'hhhh', 'eee' at line 5

由于某种原因,网站显示错误。为什么会这样?我也试过这个网站:https://www.piliapp.com/mysql-syntax-check/

【问题讨论】:

  • 我对其进行了测试并且可以工作。但是如果你一次性输入 2 个语句,它可能会出错.. 看到这个answer
  • 两者都有效。该网站的分号有问题,或者有两个语句。
  • 您的错误是` 关键字之前的` 字符:INSERT INTO 不是INSERT `INTO
  • 谢谢大家。 @PhamX.Bach 我尝试使用反引号来阻止网站告诉我有错误。它不起作用,我上面粘贴的错误消息可能是从那时开始的。它会给出带或不带反引号的错误消息。

标签: mysql insert


【解决方案1】:

如果我一次将每个 INSERT 语句粘贴到 eversql 语法检查器中,则不会报告错误。

您显示的错误消息表明,一旦您开始第二次 INSERT,解析器就会感到困惑。

这两个事实有力地表明语法检查器不支持一次检查多个 SQL 语句。

我假设检查器通过对语句执行prepare() 来工作,这将在不执行语句的情况下检查语法。 Prepare 不支持多查询。这已记录在案:https://dev.mysql.com/doc/refman/8.0/en/c-api-multiple-queries.html

多语句和结果功能只能与 mysql_query() 或 mysql_real_query() 一起使用。它们不能与准备好的语句接口一起使用。准备好的语句处理程序被定义为仅适用于包含单个语句的字符串

另见类似这样的确认:https://bugs.mysql.com/bug.php?id=9121

【讨论】:

    【解决方案2】:

    我认为当您创建表时,所使用的数据类型存在错误。 根据输入的数据类型,数据类型可能不匹配

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 2014-09-02
      相关资源
      最近更新 更多