我有如下测试架构:
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
而不是错误的插入?
谢谢!
答案 0 :(得分:1)
您需要启用STRICT_TRANS_TABLES SQL模式。
要在服务器启动时设置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"