gpt4 book ai didi

mysql - 为什么 MariaDBb 允许将文本插入 smallint

转载 作者:行者123 更新时间:2023-11-29 05:05:27 26 4
gpt4 key购买 nike

我的服务器提供商已经用 MariaDB 替换了 MYSQL,这似乎工作方式不同。我在运行“SHOW GLOBAL VARIABLES LIKE '%version%';”时获得的有关此服务器的信息是:

变量名值
协议(protocol)版本 10
slave_type_conversions

版本 5.5.58-MariaDB
version_comment MariaDB 服务器
version_compile_machine x86_64
version_compile_os Linux

SQL语句“INSERT INTO years (Year) VALUES ('test');”使用 Aria 或 MyISAM 引擎将 0 插入 smallint 字段

在我的本地开发系统上运行“SHOW GLOBAL VARIABLES LIKE '%version%';”我得到:

Variable_name 值
innodb_version 5.6.21
协议(protocol)版本 10
slave_type_conversions
版本 5.6.21-log
version_comment MySQL 社区服务器 (GPL)
version_compile_machine x86_64
version_compile_os Win64

同样的 SQL 语句“INSERT INTO years (Year) VALUES ('test');”使用 MYISAM 引擎会产生错误代码:1366“第 1 行‘年份’列的整数值‘测试’不正确”,这是我所期望和依赖的。

谁能解释为什么会这样?

最佳答案

让我把它放在正确的答案中。发生这种情况是因为两件事,一个是 Type conversion主要原因是 SQL Modes 中的 STRICT_MODE 配置配置部分。

严格模式状态

A mode where at least one of STRICT_TRANS_TABLES or STRICT_ALL_TABLES is enabled is called strict mode. With strict mode not set (default in version <= MariaDB 10.2.3), MariaDB will automatically adjust invalid values, for example, truncating strings that are too long, or adjusting numeric values that are out of range, and produce a warning.

With strict mode set (default from MariaDB 10.2.4), the statements will fail, and an error will be returned instead. The IGNORE keyword can be used when strict mode is set to convert the error to a warning.

关于mysql - 为什么 MariaDBb 允许将文本插入 smallint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49198656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com