当插入十进制值超出范围时,MySQL插入99999值,而不是抛出超出范围错误

时间:2019-09-02 17:22:39

标签: mysql sql-insert

我有如下测试架构:

CREATE DATABASE TEST;

USE TEST;

CREATE TABLE TEST(DEC_VALUE DECIMAL(5,2));

INSERT INTO TEST VALUES(111111);

但事实是,MySQL不会插入错误,而是正常插入但具有99999,99值。

我知道错误的插入是因为数据大于数据类型,但是我需要更改什么才能使MySQL抛出Error 1264: Out of range而不是错误的插入?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要启用STRICT_TRANS_TABLES SQL模式。

请参阅:Setting the SQL Mode

  

要在服务器启动时设置SQL模式,请使用--sql-mode="modes"   命令行上的选项,或选项文件中的sql-mode="modes"   例如my.cnf(Unix操作系统)或my.ini(Windows)。 modes   是用逗号分隔的不同模式的列表。清除SQL   显式运行,使用--sql-mode=""将其设置为空字符串   命令行或选项文件中的sql-mode=""

我将在my.cnf(或Windows的my.ini)中进行更改。只需附加,STRICT_TRANS_TABLES

mode="...,STRICT_TRANS_TABLES"