CREATE TABLE 'test'.'sensor' (
'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
'time' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
'value' VARCHAR( 10 ) NOT NULL
);
这是我在phpmyadmin中输入的代码。当我按下去时,我得到以下错误:
#1064 - 您的SQL语法出错;查看与您的MariaDB服务器版本对应的手册,以获得正确的语法,以便在'' test'。'传感器'附近使用。 ( ' ID' INT NOT NULL AUTO_INCREMENT PRIMARY KEY, '时间'时报'在第1行
我试过更改了一些陈述但却无法得到错误。你能帮我解决一下吗?
答案 0 :(得分:1)
MySQL使用反引号来转义字符串的标识符,单引号和双引号。
在这种情况下,你应该这样做:
CREATE TABLE `test`.`sensor` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`value` VARCHAR( 10 ) NOT NULL
);
值得注意的是,只有当你的名字与reserved keyword发生冲突时,才会严格要求使用反引号,即使这样,许多只会在特定的上下文中相关。像ORDER
或SELECT
这样的字词总是需要转义,因此最好避免使用它们作为列或表名。同样,TIME
也是列类型,因此您可能希望选择其他名称。
此外,TIMESTAMP
列类型非常有限,值只能存在于1970到2038的范围内,因此不建议使用它。相比之下,DATETIME
类型的年份范围为1000到9999,足以满足大多数需求。还有一些other quirks of TIMESTAMP
值得记住,比如自动UTC转换。
答案 1 :(得分:0)
检查您使用的是哪个版本的php和MySQL,我已经遇到了这个问题,但经过研究解决了。此查询适用于MySQL 5.5或更高版本 和MariaDB 5.5或更高版本
答案 2 :(得分:-1)
CREATE TABLE Ghee(
country_code char(1) NOT NULL default '',
description varchar(10) NOT NULL default '',
PRIMARY KEY (country_code)
)