【问题标题】:MySql Workbench SQL queries syntax errorsMySql Workbench SQL 查询语法错误
【发布时间】:2017-05-08 05:05:23
【问题描述】:

我正在测试一些简单的脚本来感受 Workbench 中的 MySQL。我创建了一个名为“myschema”的数据库,并尝试在脚本外壳中执行以下脚本

ALTER TABLE 'myschema'.'employee' DROP COLUMN 'date_of_birth' ;

但是,我总是收到以下错误:

执行 C:\Users\Owner\AppData\Roaming\MySQL\Workbench\scripts\deletion.py 时未捕获的异常: 文件“c:\users\owner\appdata\roaming\mysql\workbench\scripts\deletion.py”,第 9 行

ALTER TABLE 'myschema'.'employee' DROP COLUMN 'date_of_birth' ;

SyntaxError: 无效语法

这是一个非常基本的命令,所以我很困惑为什么它不起作用。 我已经尝试去掉引号和“myschema”部分,但我一直收到同样的错误。我做错了什么?

事实上,我发现脚本 shell 中根本没有 SQL 查询。它们都返回语法错误

已解决:我使用了错误的编辑器。已通过使用 SQL 查询编辑器而不是脚本外壳解决

【问题讨论】:

  • 如果你在数据库'myschema'中,不要使用myschema.employee,使用employee。不要使用引号。就照原样提供
  • 正如我在帖子中所说,我已经尝试了这两种更改并得到相同的错误

标签: mysql sql database mysql-workbench


【解决方案1】:

简单使用:

ALTER TABLE myschema.employee DROP COLUMN date_of_birth;

或者如果您有非标准标识符或保留关键字要转义,您可以使用反引号:

ALTER TABLE `myschema`.`employee` DROP COLUMN `date_of_birth`;

【讨论】:

  • 您“必须”转义的唯一原因是与 reserved keyword 发生冲突,即便如此,它也经常与上下文相关。
  • 就像我在帖子中所说的那样,我已经尝试过了(去掉引号)。仍然出现同样的错误。
  • @Bob 你可以在这里发布员工表的描述吗?
  • @tadman - 同意。我只是在这里提到它以供参考。而已。 :)
  • 是的!只是试图添加更多的上下文。我看到人们出于毫无根据的偏执而逃避各种事情,它近乎迷信,所以理性的解释有助于消除这一点。
【解决方案2】:

记住,你应该使用反引号作为标识符:

ALTER TABLE `myschema`.`employee` DROP COLUMN `date_of_birth` ;

【讨论】:

  • 我刚刚进行了更改,但仍然出现相同的错误
  • MySQL 不是 Postgres。 MySQL 在转义标识符方面甚至都不正常。
  • 好多了!是的,有些日子很容易越过溪流。
猜你喜欢
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 2016-09-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
相关资源
最近更新 更多