【问题标题】:Simple SQL Query Error简单的 SQL 查询错误
【发布时间】:2017-09-17 21:16:04
【问题描述】:

我一直在尝试调试这个query that I'm using to practice on

我在尝试构建时遇到的错误是:

架构错误:错误:ER_PARSE_ERROR:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 ') 附近使用的正确语法;在第 10 行插入客户(CustomerId、CustomerName、ContactName、Address、City)'

我已经尝试了多种修复方法,我已经去除了所有不必要的绒毛,但我不确定为什么我仍然无法使其正常工作。


更新 我已更新 the link 以显示尝试添加外键。

【问题讨论】:

  • 错误信息总是准确地指向问题,或者紧接着问题之后。

标签: mysql sql database-design


【解决方案1】:

Customers 创建表定义的末尾有一个额外的逗号。具体来说,第 9 行的主键末尾多了一个逗号。

Orders 表定义也是如此,OrderId 的主键定义也有一个额外的逗号。

CREATE TABLE Customers (
  CustomerId int(6) unsigned NOT NULL,
  CustomerName varchar(200) NOT NULL,
  ContactName varchar(200) NOT NULL,
  Address varchar(200) NOT NULL,
  City varchar(50) NOT NULL,
  PRIMARY KEY (CustomerId), <---------- here
);


CREATE TABLE IF NOT EXISTS Orders (
  OrderId int(6) unsigned NOT NULL,
  CustomerId int(6) NOT NULL,
  OrderDate varchar(200) NOT NULL,
  Product varchar(200) NOT NULL,
  PRIMARY KEY (`OrderId`), <--- and here
);

【讨论】:

  • 您是否介意查看问题中的更新链接。我添加了一行,即外键行,但无法正常工作。
【解决方案2】:

你在这行有错误

  PRIMARY KEY (CustomerId),

你有多余的逗号。删除它。

【讨论】:

  • 您介意看看updated link。我添加了一个外键,但无法正常工作。
  • 括号中包含列名,FOREIGN KEY (CustomerId) REFERENCES Customers(CustomerId) 和数据类型声明应与引用表中的相同,CustomerId int(6) unsigned NOT NULL跨度>
  • this link 代表你在说什么吗?我相信我输入了您所说的内容,但仍然出现错误。
  • 使用它并查看与您的代码的区别——如果不存在订单,则创建表( OrderId int(6) unsigned NOT NULL,CustomerId int(6) unsigned NOT NULL,OrderDate varchar(200) NOT NULL, Product varchar(200) NOT NULL, PRIMARY KEY (OrderId), FOREIGN KEY (CustomerId) REFERENCES Customers(CustomerId) ) DEFAULT CHARSET=utf8;
  • 这是updated schema。您介意更新页面上的代码,然后单击更新并粘贴链接吗?我试过你说的,但我仍然收到错误。
猜你喜欢
  • 1970-01-01
  • 2019-09-21
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多