SQL 错误的属性(列)名称

SQL bad attribute (column) names

我在 MySQL 数据库中创建了 table 查询:

CREATE TABLE IF NOT EXISTS `CREW` (
`ID` INT NOT NULL,
`CALL` VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (`ID`));

它确实工作得很好,但是当我尝试:

INSERT INTO CREW (ID, CALL) VALUES (0, 'None');

我有 ERROR 1064。我们应该避免的属性的其他错误名称是什么?

你应该像在 create 语句中那样做。 用反引号包围属性名称和 table 名称:

INSERT INTO `CREW` (`ID`, `CALL`) VALUES (0, 'None');

如果你总是这样,你就不需要回避任何名字。

您的 CREW table 中的列名称之一是 'CALL'。 CALL statement 用于调用存储过程。所以当你执行

INSERT INTO CREW (ID, CALL) VALUES (0, 'None');

Mysql 了解您正在尝试执行存储过程。所以你需要用反引号包围属性名称

INSERT INTO CREW ('ID', 'CALL') VALUES (0, 'None');
  1. 不要对列名使用保留字。 MySQL 列表在这里:https://dev.mysql.com/doc/refman/8.0/en/keywords.html. Multi-db list here: https://www.drupal.org/node/141051

  2. 如果你想让你的SQL与其他数据库兼容,你应该使用snake_case