使用mysql db

时间:2016-07-05 21:27:47

标签: 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
 );

这是我在phpmyadmin中输入的代码。当我按下去时,我得到以下错误:

#1064 - 您的SQL语法出错;查看与您的MariaDB服务器版本对应的手册,以获得正确的语法,以便在'' test'。'传感器'附近使用。 ( ' ID' INT NOT NULL AUTO_INCREMENT PRIMARY KEY, '时间'时报'在第1行

我试过更改了一些陈述但却无法得到错误。你能帮我解决一下吗?

3 个答案:

答案 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发生冲突时,才会严格要求使用反引号,即使这样,许多只会在特定的上下文中相关。像ORDERSELECT这样的字词总是需要转义,因此最好避免使用它们作为列或表名。同样,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)
)