有谁知道MySQL5.0的语法出了什么问题吗?
CREATE TABLE IF NOT EXISTS target (
_id int(11) NOT NULL AUTO_INCREMENT,
time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
map_id int(11) DEFAULT NULL,
left int(11) DEFAULT NULL,
top int(11) DEFAULT NULL,
status tinyint(1) NOT NULL,
temperature int(11) DEFAULT NULL,
humidity float DEFAULT NULL,
lum int(11) DEFAULT NULL,
PRIMARY KEY (_id),
FOREIGN KEY (map_id) REFERENCES map(id) ON DELETE CASCADE
)我将向您展示错误:
您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,了解要在第5行使用的正确语法:'left INTEGER DEFAULT NULL,top INTEGER DEFAULT NULL,status tinyint(1) NOT
发布于 2011-12-30 01:32:39
因为left是一个MySQL 5.0 reserved word。此外,即使您可以转义字段名,在表定义中使用保留字也不是一个好主意。
发布于 2011-12-30 01:34:46
你必须这样写它:
CREATE TABLE IF NOT EXISTS target (
_id int(11) NOT NULL AUTO_INCREMENT,
time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
map_id int(11) DEFAULT NULL,
`left` int(11) DEFAULT NULL,
top int(11) DEFAULT NULL,
status tinyint(1) NOT NULL,
temperature int(11) DEFAULT NULL,
humidity float DEFAULT NULL,
lum int(11) DEFAULT NULL,
PRIMARY KEY (_id),
FOREIGN KEY (map_id) REFERENCES map(id) ON DELETE CASCADE
)看看左行中的 (反引号)字符!
发布于 2011-12-30 01:35:16
您正在使用保留字作为字段名称。你可以这样做,但是你必须正确地转义它们,就像这样:
CREATE TABLE IF NOT EXISTS target (
`_id` int(11) NOT NULL AUTO_INCREMENT,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`map_id` int(11) DEFAULT NULL,
`left` int(11) DEFAULT NULL,
`top` int(11) DEFAULT NULL,
`status` tinyint(1) NOT NULL,
`temperature` int(11) DEFAULT NULL,
`humidity` decimal(13,2) DEFAULT NULL,
`lum` int(11) DEFAULT NULL,
PRIMARY KEY (_id),
FOREIGN KEY (map_id) REFERENCES map(id) ON DELETE CASCADE
)我的建议是避免保留名称。
https://stackoverflow.com/questions/8671128
复制相似问题