MySQL insert varchar value into int auto increment column

问题描述 投票:0回答:1

我注意到项目暂存服务器上有奇怪的 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)

有什么想法吗? 谢谢

mysql sql-insert auto-increment
1个回答
0
投票

这个和sql_mode有关系。可以查看两个数据库实例的sql_mode参数,一探究竟。

show variables like '%sql_mode%';

© www.soinside.com 2019 - 2024. All rights reserved.