【问题标题】:SQL dump uploading syntax errorSQL转储上传语法错误
【发布时间】:2016-12-03 23:21:45
【问题描述】:

我有一个 sql 转储

CREATE TABLE "documents" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  "create_ts" timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  "update_ts" timestamp DEFAULT NULL,
  "number" int(11)  NOT NULL,
  "entity_id" int(11)  NOT NULL
);
INSERT INTO 'documents' VALUES (1,'2015-01-05 11:00:21',NULL,7036691,2709001);

CREATE TABLE "payments" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  "create_ts" timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  "update_ts" timestamp DEFAULT NULL,
  "amount" decimal(10,2) NOT NULL,
  "finish_time" timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
);

INSERT INTO "payments" VALUES (2709001,'2015-01-05 11:00:21',NULL,1000.00,'2015-01-04 21:00:00');

但是当我尝试通过 phpmyadmin 或 navicat 等工具上传它时,我收到了一个错误:

1064 - 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 ''文件'值附近(1,'2015-01-05 11:00:21',NULL,7036691,2709001)' 在第 1 行

有什么问题?

【问题讨论】:

  • MySQL 使用 back.ticks 作为分隔标识符。 (那些" 是 ANSI SQL。)
  • 我对mysql不太熟悉,但如果它的工作方式可以与sql-server媲美;您正在尝试将 1 插入到自动增量属性中。您要么必须禁用自动增量,要么不为id 插入值(在这种情况下,您必须提及您正在插入的属性)。
  • 我不确定试试这个 INSERT INTO 文档 VALUES (1,'2015-01-05 11:00:21',NULL,7036691,2709001);。删除表名的引号。您在文档中使用单引号,在付款检查中使用双引号是否语法正确。

标签: mysql sql mysql-workbench mysqldump mysql-error-1064


【解决方案1】:

从 Table_name 和 Column_Names 中删除所有双引号和单引号。在 MySql 中AUTOINCREMENT 不存在,它必须是'AUTO_INCREMENT'。除了timestamp 的默认值似乎无效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    相关资源
    最近更新 更多