我注意到项目暂存服务器上有奇怪的 MySQL 行为。给定:
create table test_table
(
id int auto_increment,
name varchar(64) not null,
constraint test_table_pk
primary key (id)
);
insert into test_table (id, name)
VALUES (3, 'value 3');
insert into test_table (id, name)
VALUES (5, 'value 5');
insert into test_table (id, name)
VALUES ('value 6 id', 'value 6');
select *
from test_table;
结果:
mysql> select * from test_table;
+----+---------+
| id | name |
+----+---------+
| 3 | value 3 |
| 5 | value 5 |
| 6 | value 6 |
+----+---------+
2 rows in set (0.01 sec)
前两个插入语句按预期工作正常。第三个背后的魔力是什么?它有效,而且似乎不正确的类型值被替换为自动增量值。 我正在尝试创建数据库服务器的 docker 版本。但是我找不到启用此行为的配置选项。第三个插入语句被 docker DB 实例拒绝并显示错误消息:
Incorrect Integer value: 'value 6 id' for column 'id'
mysql> SHOW VARIABLES LIKE 'version';
+---------------+-----------+
| Variable_name | Value |
+---------------+-----------+
| version | 5.7.27-30 |
+---------------+-----------+
1 row in set (0.01 sec)
有什么想法吗? 谢谢
这个和sql_mode有关系。可以查看两个数据库实例的sql_mode参数,一探究竟。
show variables like '%sql_mode%';