我在尝试从meta
表
mysql> SHOW CREATE TABLE 'meta';
CREATE TABLE IF NOT EXISTS `meta` (
`key` VARCHAR(255) NOT NULL,
`value` LONGTEXT NOT NULL,
UNIQUE INDEX `key_UNIQUE` (`key` ASC),
PRIMARY KEY (`key`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;
mysql> SELECT * FROM 'meta';
+---------------------+-------------+
| key | value |
+---------------------+-------------+
| website_title | title |
| website_description | description |
+---------------------+-------------+
现在当我执行此SQL
查询SELECT value FROM 'meta' WHERE key='website_title';
时,我收到了错误。
mysql> SELECT value FROM `meta` WHERE key='website_title';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual ...the right syntax to use near 'key='website_title'' at line 1
答案 0 :(得分:2)
key
是MySQL中的保留字。更改列名称。
参考here。
答案 1 :(得分:2)
key
是一个reserved字(想想primary key
,foreign key
)。最好选择不同的名称,但如果使用它,则使用反引号:
SELECT value
FROM `meta`
WHERE `key` = 'website_title';
更好的方法是更改名称:
CREATE TABLE IF NOT EXISTS `meta` (
meta_key VARCHAR(255) NOT NULL PRIMARY KEY.
meta_value LONGTEXT NOT NULL
);
在主键上构建唯一索引是多余的。不要打扰。