SQL 语法错误 (MYSQL 5.0)
Posted
技术标签:
【中文标题】SQL 语法错误 (MYSQL 5.0)【英文标题】:Error in SQL Syntax (MYSQL 5.0) 【发布时间】:2012-01-30 01:32:41 【问题描述】:有人知道这个 mysql 5.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 服务器版本相对应的手册,以获取在 'left INTEGER DEFAULT NULL 附近使用的正确语法, 顶部整数默认空值, 第 5 行的状态 tinyint(1) NOT'
【问题讨论】:
How can I write SQL for a table that shares the same name as a protected keyword in MySql? 的可能重复项 【参考方案1】:因为left
是MySQL 5.0 reserved word。此外,即使您可以转义字段名称,在表定义中使用保留字也不是一个好主意。
【讨论】:
【参考方案2】:你必须这样写:
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
)
查看左行中的 ``(反引号)字符!
【讨论】:
【参考方案3】:您使用保留字作为字段名称。你可以这样做,但是你必须正确地逃避它们,就像这样:
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
)
我的建议是避免保留名称。
【讨论】:
以上是关于SQL 语法错误 (MYSQL 5.0)的主要内容,如果未能解决你的问题,请参考以下文章
语法错误或访问冲突:1064 您的 SQL 语法有错误;对应于正确语法的 MySQL 服务器版本
MySQL #1064 - 您的 SQL 语法 2020 有错误 [重复]
SQL 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法
错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用
Liquibase:MySQL 存储过程中的 SQL 语法错误
“您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法错误”Hibernate 4 [重复]