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');
不要对列名使用保留字。 MySQL 列表在这里:https://dev.mysql.com/doc/refman/8.0/en/keywords.html. Multi-db list here: https://www.drupal.org/node/141051
如果你想让你的SQL与其他数据库兼容,你应该使用snake_case
我在 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');
不要对列名使用保留字。 MySQL 列表在这里:https://dev.mysql.com/doc/refman/8.0/en/keywords.html. Multi-db list here: https://www.drupal.org/node/141051
如果你想让你的SQL与其他数据库兼容,你应该使用snake_case