gpt4 book ai didi

mysql - 如何修复转义表名时的语法错误?

转载 作者:行者123 更新时间:2023-11-29 11:25:52 24 4
gpt4 key购买 nike

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 中输入的代码。当我按下 go 时,出现以下错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''test'.'sensor' ( 'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 'time' TIMES' at line 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 转换。

关于mysql - 如何修复转义表名时的语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38213054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com