mysql - 创建查询时出现 SQL 语法错误

标签 mysql create-table

当我在 phpMyAdmin 和 Sequel 上运行下面的查询时,出现以下错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id Int UNSIGNED NOT NULL AUTO_INCREMENT, login Char(128) NOT NULL, passw' at line 3.

我无法找出此查询的错误。 Mysql运行在5.5.25版本上。

CREATE TABLE user
(
  id Int UNSIGNED NOT NULL AUTO_INCREMENT,
  login Char(128) NOT NULL,
  password Char(128) NOT NULL,
  emailaddress Char(128),
  alternateemailaddress Char(128),
  officephone Char(20),
  officefax Char(20),
  mobilephone Char(20),
  client Int UNSIGNED,
  facility Int UNSIGNED,
  user_status Int UNSIGNED NOT NULL DEFAULT 0,
  valid_from Datetime NOT NULL,
  valid_to Datetime NOT NULL,
  last_login Datetime,
  last_login_from Char(48),
  modified_by Int NOT NULL,
  modified_time Datetime,

  PRIMARY KEY (id),
  FOREIGN KEY client REFERENCES client (id) ON DELETE CASCADE,
  FOREIGN KEY facility REFERENCES facility (id) ON DELETE CASCADE
 
 ) ENGINE = InnoDB
  AUTO_INCREMENT = 0
;

最佳答案

在编写表名和字段名时应该使用反引号,以避免 MySQL 将其解析为保留关键字。 您还应该使用括号括住外键名称。 工作查询应如下所示:

CREATE TABLE `user`
(
  `id` Int UNSIGNED NOT NULL AUTO_INCREMENT,
  `login` Char(128) NOT NULL,
  `password` Char(128) NOT NULL,
  `emailaddress` Char(128),
  `alternateemailaddress` Char(128),
  `officephone` Char(20),
  `officefax` Char(20),
  `mobilephone` Char(20),
  `client` Int UNSIGNED,
  `facility` Int UNSIGNED,
  `user_status` Int UNSIGNED NOT NULL DEFAULT 0,
  `valid_from` Datetime NOT NULL,
  `valid_to` Datetime NOT NULL,
  `last_login` Datetime,
  `last_login_from` Char(48),
  `modified_by` Int NOT NULL,
  `modified_time` Datetime,

  PRIMARY KEY (`id`),
  FOREIGN KEY (`client`) REFERENCES `client` (`id`) ON DELETE CASCADE,
  FOREIGN KEY (`facility`) REFERENCES `facility` (`id`) ON DELETE CASCADE

 ) ENGINE = InnoDB
  AUTO_INCREMENT = 0
;

关于mysql - 创建查询时出现 SQL 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16007511/

相关文章:

mysql - 使用 SUM 和 COUNT 进行多表查询

mysql - 多次加入同一张 table

c# - 在 C# 准备语句中执行多个 SQL 查询

mysql - 意外的外键

mysql - CREATE TABLE new_table_name LIKE old_table_name with old_table_name's AUTO_INCREMENT 值

mysql - 使用单人表来存储和显示相关的家庭成员

php - 使用 PHP 创建大写的 MySQL 表名

php - CREATE TABLE IF NOT EXISTS 总是创建新表(即使存在)

php - 使用 GET 参数从 URL 将 CSV 列表保存到数据库 - PHP/MySQL

mysql - 在 Ubuntu 上纯粹从 bash 脚本安装 mysql 5.7