При локальном обновлении ненулевого столбца до нулевого значения он выдаст ошибку, но при работе с экземпляром 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_mode обрабатывает это, но изменение значения не имеет никакого эффекта.Установка для моих локальных значений тех же значений, что и для удаленных, не воспроизводит поведение:
show variables where Variable_name like '%sql_mode%';
'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'
Какая настройка позволяет моему экземпляру AWS RDS отображать предупреждение, если локально это ошибка?
Дополнительная информация:
- Определение столбца:
xxxxx
int (11) без знака NOT NULL - Механизм хранения: InnoDB
- Локальная версия: 5.6.33-log и 5.6.27 (наблюдается проблема в двух разных областях)
- Удаленная версия: 5.6.39-log