将Aurora MySQL 5.7插入失败

时间:2018-10-05 13:49:33

标签: mysql database mysql-5.7 amazon-rds-aurora

似乎无法弄清楚这一点。我来自SQL Server界,但希望它能起到同样的作用。

insert into active_directory (ad_account,email,distinguished_name,employee_id,manager_distinguished_name,display_name,terminated)
select
    ad_account,
    email,
    distinguished_name,
    employee_id,
    manager_distinguished_name,
    display_name,
    case when distinguished_name like '%Terminations%' then 1 else 0 end as terminated
from
    active_directory_staging

失败,并显示以下错误:

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 'terminated)
select
    ad_account,
    email,
    distinguished_name,
    employee_id,
    mana' at line 1

如果我从插入/选择查询中删除terminated列,则它可以正常工作。重新添加它,它将失败。

如果我只运行选择部分(对终止列使用case语句,也可以不使用case语句),

我可能只是在这里缺少一些基本知识……任何帮助都将受到赞赏。

active_directory表create语句

CREATE TABLE `active_directory` (
  `ad_account` varchar(100) COLLATE latin1_general_ci DEFAULT NULL,
  `display_name` varchar(100) COLLATE latin1_general_ci DEFAULT NULL,
  `email` varchar(100) COLLATE latin1_general_ci DEFAULT NULL,
  `distinguished_name` varchar(200) COLLATE latin1_general_ci DEFAULT NULL,
  `employee_id` varchar(100) COLLATE latin1_general_ci DEFAULT NULL,
  `manager_distinguished_name` varchar(200) COLLATE latin1_general_ci DEFAULT NULL,
  `terminated` bit(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

1 个答案:

答案 0 :(得分:0)

MySQL有很多保留字,不能用作列名/别名。

不幸的是,对于此查询,terminated是一个这样的词。

摘录自https://dev.mysql.com/doc/refman/5.7/en/keywords.html

  • ...
  • 临时
  • TEMPTABLE
  • 已终止(R)
  • TEXT
  • ...