为什么我收到此语句的SQL错误?

时间:2016-08-09 09:37:50

标签: mysql phpmyadmin

我正在尝试在PHPMyAdmin中设置一些表并使用了这个语句;为什么会产生错误而不被接受?我看不出任何明显的语法问题,所以我不确定问题是什么。生成的错误标记为#1064。

CREATE TABLE 'users' (
  'id' INT NOT NULL AUTO_INCREMENT,
  'username' VARCHAR(45) NOT NULL,
  'password' VARCHAR(45) NOT NULL,
  'email' VARCHAR(45) NOT NULL,
  'dob' DATE NOT NULL,
  'image_url' VARCHAR(45) NOT NULL,
  'name' CHAR NOT NULL,
  'email_private' TINYINT NOT NULL,
  PRIMARY KEY ('id')
);


CREATE TABLE 'comments' (
  'id' INT NOT NULL AUTO_INCREMENT,
  'comment' VARCHAR(140) NOT NULL,
  'receiver_id' INT NOT NULL,
  PRIMARY KEY ('id'),
  CONSTRAINT 'receiver_id'
    FOREIGN KEY ('receiver_id')
    REFERENCES 'users' ('id')
);

2 个答案:

答案 0 :(得分:1)

因为你使用MySQL Reserved Words,所以逃避它们的方法是使用反引号`:

CREATE TABLE 'users' (
  `id` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(45) NOT NULL,
  `password` VARCHAR(45) NOT NULL,
  `email` VARCHAR(45) NOT NULL,
  `dob` DATE NOT NULL,
  `image_url` VARCHAR(45) NOT NULL,
  `name` CHAR NOT NULL,
  `email_private` TINYINT NOT NULL,
  PRIMARY KEY (`id`)
);

答案 1 :(得分:0)

您不应在列名中使用',如果您想使用,请使用`而不是'
'中的内容表示它是一个字符串,'始终用于列值而非列名称