选择行时出现Mysql错误

时间:2017-07-24 19:19:38

标签: mysql sql

我在尝试从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

2 个答案:

答案 0 :(得分:2)

key是MySQL中的保留字。更改列名称。

参考here

答案 1 :(得分:2)

key是一个reserved字(想想primary keyforeign 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
);

在主键上构建唯一索引是多余的。不要打扰。