【问题标题】:ERROR 1064 (42000) - You have an error in you SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntaxERROR 1064 (42000) - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法
【发布时间】:2017-11-22 04:03:50
【问题描述】:

在执行 SQL 脚本时,我遇到了这个错误:

ERROR 1064 (42000) - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 7 行的“rows int(12) NOT NULL default '600', timespan int(12) unsigned NOT NULL defaul”附近使用正确的语法

创建的代码是:

CREATE TABLE rra (
    id mediumint(8) unsigned NOT NULL auto_increment,
    hash varchar(32) NOT NULL default '',
    name varchar(100) NOT NULL default '',
    x_files_factor double NOT NULL default '0.1',
    steps mediumint(8) default '1',
    rows int(12) NOT NULL default '600',
    timespan int(12) unsigned NOT NULL default '0',
    PRIMARY KEY  (id)
) ENGINE=MyISAM;

我不明白语法有什么问题。 任何帮助将不胜感激!

【问题讨论】:

  • 可能需要将整数/小数而不是字符串传递给这些类型(int、double)。从 600 中删除单引号。
  • 删除字段,直到找到导致问题的原因
  • 我找到了:rows 是 MariaDB 中的保留字 mariadb.com/kb/en/mariadb/reserved-words 使用不同的列名(numrows 之类的)
  • 谢谢雅各布!更改了列名。问题解决了。
  • @JuanCarlosOropeza - 1064 几乎总是正好指向或紧接在违规标记之后。无需到处钓鱼。

标签: mysql sql syntax mariadb


【解决方案1】:

这个解决方案的问题是脚本都失败了。 SQL 正在寻找表格列“行”。

【讨论】:

    【解决方案2】:

    删除数字字段默认值周围的引号并重命名列行。 rows 是保留字。

    CREATE TABLE rra (
        id mediumint(8) unsigned NOT NULL auto_increment,
        hash varchar(32) NOT NULL default '',
        name varchar(100) NOT NULL default '',
        x_files_factor double NOT NULL default 0.1,
        steps mediumint(8) default 1,
        rra_rows int(12) NOT NULL default 600,  -- rows is a reserved word
        timespan int(12) unsigned NOT NULL default 0,
        PRIMARY KEY  (id)
    ) ENGINE=MyISAM;
    

    【讨论】:

      猜你喜欢
      • 2018-11-09
      • 2018-04-04
      • 2017-09-12
      • 2019-10-24
      • 2014-03-27
      • 2021-12-03
      • 1970-01-01
      • 2019-11-22
      • 2018-11-28
      相关资源
      最近更新 更多