【问题标题】:Unable to describe table, ERROR 1064 (42000): You have an error in your SQL syntax无法描述表,错误 1064 (42000):您的 SQL 语法有错误
【发布时间】:2017-08-25 09:38:39
【问题描述】:

我有很多表的数据库,其中一个叫做 group 是由代码创建的:

CREATE TABLE IF NOT EXISTS `sc`.`group` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NOT NULL,
  `description` TEXT NULL,
  `group_type_id` INT NOT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_group_group_type1`
    FOREIGN KEY (`group_type_id`)
    REFERENCES `sc`.`group_type` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

CREATE INDEX `fk_group_group_type1_idx` ON `sc`.`group` (`group_type_id` ASC);

当我使用命令 show tables 时,我得到:

+-------------------------------------+
| event_type                          |
| function                            |
| group                               |
| group_admin                         |
...
...
+-------------------------------------+

如果我例如写:describe function;,mysql 返回:

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(45) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

但是如果我写describe group; 我会得到一个错误: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group' at line 1

我无法对group 表执行任何操作(例如选择、插入)。

这有什么问题?

【问题讨论】:

  • Group 对于表格来说并不是一个好名字(想想 group by)。如果您必须使用反引号限定所有引用(就像您在 create 语句中所做的那样)。
  • @P.Salmon 你是对的,describe `group`; 工作

标签: mysql database relational-database


【解决方案1】:

您使用引号创建表格(我认为是因为 group 是保留字)

试试

DESCRIBE `group`;

【讨论】:

  • 提示:无论如何都要避免使用表名作为保留字。并避免(如果可能)使用带引号的名称。
  • 虽然table namestudent,但我无法运行此命令,并且我也收到相同的错误1064。重新连接到mysql对我有用。
【解决方案2】:

Group 是 MySql 中的保留关键字。您需要在 describe 语句中使用反引号。

请尝试以下命令:

描述“组”;

请避免在表名和列名中使用保留关键字。您可以为表名添加前缀,例如 tbl_group。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    相关资源
    最近更新 更多