为什么这个MySQL查询在我的生产服务器上工作,而不是在我的本地测试服务器上工作?

为什么这个MySQL查询在我的生产服务器上工作,而不是在我的本地测试服务器上工作?,mysql,Mysql,这是我正在尝试运行的查询: INSERT INTO Article (id, name, title, author, dateCreate, dateEdit, permissions, template, views, tags) VALUES ('', 'test_show', 'Test Show', '1', '2018-03-24 18:47:09', '2018-03-24 18:47:20', '', '', '', '') 当我在我的生产服务器上运行它时,我相信它会工作 但是

这是我正在尝试运行的查询:

INSERT INTO Article (id, name, title, author, dateCreate, dateEdit, permissions, template, views, tags) VALUES ('', 'test_show', 'Test Show', '1', '2018-03-24 18:47:09', '2018-03-24 18:47:20', '', '', '', '')
当我在我的生产服务器上运行它时,我相信它会工作

但是,在我的本地测试机器上,运行MySQL版本14.14 Distrib 5.7.21,当我运行相同的查询时,我得到以下错误:

1366-第1行“id”列的整数值不正确

两台服务器上的数据库结构完全相同。列“id”设置为自动递增


我需要使我的本地测试服务器的行为与我的生产服务器的行为相同,那么MySQL版本之间是否存在一些需要调整的设置差异?在任何情况下,如何使查询在本地测试服务器上工作?

由于id设置为自动递增,您不需要将其添加到查询中。试试这个:

INSERT INTO Article (name, title, author, dateCreate, dateEdit, permissions, template, views, tags) VALUES ('test_show', 'Test Show', '1', '2018-03-24 18:47:09', '2018-03-24 18:47:20', '', '', '', '')

不同的sql_模式:@Caramiriel,谢谢您提供的信息,但是您能否详细说明sql_模式的哪些方面需要更改才能使我的本地测试服务器接受查询?似乎有多种选择,但不清楚我到底应该调整哪一种以及如何调整。当然。选择@@sql\u模式;显示当前正在使用的sql\u模式。您可以比较生产和本地测试中的值。要更改它们,其中一个选项是更改配置文件,如my.ini/my.cnf。这控制了MySQL需要有多严格,从而在不明确的情况下产生不那么令人惊讶的结果。在您的示例中,不允许将空文本字符串值设置为数值。更多信息,例如感谢您的回复上的各种严格程度。但是,由于查询在我的生产服务器上工作,我需要使查询在本地测试服务器上工作,而无需更改查询本身。在我看来,这是自动递增字段的最佳和最清晰的方法。我并不反对。我只是被迫在服务器上维护查询,因为它是结构化的,所以不幸的是,使用此解决方案不是我的选择。