当我在 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/