mysql显示sql错误:1048作为警告而不是错误

zmeyuzjn  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(954)

当在本地将not null列更新为null值时,它将抛出一个错误,但是当在aws rds示例上运行时,它将正常并报告一个警告。
例如,针对aws rds:

2018-05-31 15:41:23,066 [][][localhost]  WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper:232 - SQL Warning Code: 1048, SQLState: null
2018-05-31 15:41:23,068 [][][localhost]  WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper:233 - Column 'xxxxx' cannot be null

和我当地的人作对:

2018-05-31 15:02:07,023 [][][localhost]  WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper:144 - SQL Error: 1048, SQLState: 23000
2018-05-31 15:02:07,024 [][][localhost] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper:146 - Column 'xxxxx' cannot be null
2018-05-31 15:02:07,029 [][][localhost]  INFO org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl:208 - HHH000010: On release of batch it still contained JDBC statements
2018-05-31 15:02:07,035 [][][localhost]  WARN net.sourceforge.stripes.exception.DefaultExceptionHandler:90 - Unhandled exception caught by the Stripes default exception handler.
org.hibernate.exception.ConstraintViolationException: could not execute statement

从我的阅读中,sql\u mode属性处理这个问题,但是更改值没有任何效果。将my local设置为与remote相同的值不会再现以下行为:

show variables where Variable_name like '%sql_mode%';
'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'

什么设置允许我的aws rds示例在本地出错时显示警告?
其他信息:
列定义: xx int(11)无符号非空
存储引擎:innodb
本地版本:5.6.33-log和5.6.27(在两个不同的区域观察到该问题)
远程版本:5.6.39-log

ctehm74n

ctehm74n1#

您可以将sql\ U模式设置为“忽略”,也就是说,不容易做到这一点。
或者,您可以使用“插入忽略”以忽略错误/警告,如下所示:

mysql> insert into x values(null);
ERROR 1048 (23000): Column 'id' cannot be null
mysql> insert ignore into x values(null);
Query OK, 1 row affected, 1 warning (0.15 sec)

mysql> select * from x;
+----+
| id |
+----+
|  0 |
+----+
1 row in set (0.00 sec)

mysql> insert ignore into x values(null);
Query OK, 1 row affected, 1 warning (0.16 sec)

mysql> select * from x;
+----+
| id |
+----+
|  0 |
|  0 |
+----+
2 rows in set (0.00 sec)

相关问题