sql错误1064(42000)语法错误

时间:2012-02-25 10:44:09

标签: mysql sql syntax mysql-error-1064

CREATE TABLE IF NOT EXISTS message(
  id INT NOT NULL auto_increment,
  userid INT NOT NULL,
  date Date NOT NULL,
  text varchar(255) NOT NULL,
  PRIMARY KEY  ('id')
  FOREIGN KEY ('userid') REFERENCES users('id'));

我只是想知道是否有人可以帮我识别语法错误,因为我无法创建表格。

5 个答案:

答案 0 :(得分:5)

尝试在主键声明后添加,

更新:我想它应该是

CREATE TABLE IF NOT EXISTS message (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  userid INT NOT NULL,
  date Date NOT NULL,
  text varchar(255) NOT NULL,
  FOREIGN KEY (userid) REFERENCES users(id));

答案 1 :(得分:0)

我假设这是用于MS SQL Server的?如果你得到了MS SQL Server Studio,你可以编写一些能让你明白的东西:

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[message]') AND type in (N'U'))
CREATE TABLE message(
id INT IDENTITY NOT NULL,
userid INT NOT NULL,
date Date NOT NULL,
text varchar(255) NOT NULL,
PRIMARY KEY  (id),
FOREIGN KEY (userid) REFERENCES users(id))
GO

答案 2 :(得分:0)

您的查询应如下所示

CREATE TABLE IF NOT EXISTS message (
  id INT auto_increment PRIMARY KEY,
  userid INT NOT NULL,
  date Date NOT NULL,
  text varchar(255) NOT NULL,
  FOREIGN KEY (userid) REFERENCES users(id));

如果id表中有users作为主键。

CREATE TABLE users (id INT PRIMARY KEY)

答案 3 :(得分:0)

您的查询应如下所示:

CREATE TABLE IF NOT EXISTS message(
  id INT NOT NULL auto_increment,
  userid INT NOT NULL,
  date Date NOT NULL,
  text varchar(255) NOT NULL,
  PRIMARY KEY  ('id'),
  FOREIGN KEY ('userid') REFERENCES users('id')
) Engine=InnoDB;

请注意,之后的PRIMARY KEY ('id')

小技巧

您不必在表定义中指定外键。这样做是很实际的(因为dump可能会导出表,以便外键在创建/插入时失败):

CREATE TABLE 1; -- With references to table 2
CREATE TABLE 2;
INSERT INTO 1;
INSERT INTO 2;
ALTER TABLE 1 ADD FOREIGN KEY (user_id) REFERENCES 2 2(id);

答案 4 :(得分:0)

尝试更改表的名称,可能是消息是MySQL中的内置关键字。

更新到此:我想它应该是

CREATE TABLE IF NOT EXISTS myMessage (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  userid INT NOT NULL,
  date Date NOT NULL,
  text varchar(255) NOT NULL,
  FOREIGN KEY (userid) REFERENCES users(id));