一尘不染

对于整数的MySQL列,错误的整数值''并允许为null?

sql

我正在将CSV插入表中。我对CSV中的内容没有任何控制,很多字段为空白。例如,在我的第一条记录中,“ baths_full”字段为空(两个逗号背对背)。

在运行MySQL 5.5.37的生产服务器上,它将带​​有的记录插入baths_full为空字段。在运行MySQL
5.6.19的本地计算机上,出现以下错误:

[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'baths_full' at row 1 (SQL: insert into `listings_queue` (`

奇怪的是,表的架构是相同的。实际上,我使用生产机器的导出来创建本地数据库。

该字段baths_full设置为TinyInt,无符号,允许为null,默认为null。要添加的一件事是,它看起来像在SQL插入语句Laravel中创建的那样,将空值视为空格。无论如何,我的生产机器都可以毫无问题地运行脚本,但是在本地不会运行。


阅读 117

收藏
2021-05-23

共1个答案

一尘不染

我发现了我的问题。我的本地MySQL在严格模式下运行。此线程的答案常规错误:1366使用Doctrine 2.1和Zend Formupdate的整数值不正确已修复该问题。

您正在使用MySQL吗?发生这种情况是因为MySQL在严格模式下运行。从phpMyAdmin或您正在使用的任何数据库管理员运行以下查询,以检查数据库是否处于严格模式下:

SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;

如果返回包含STRICT_TRANS_TABLES您可以尝试运行的内容:

SET @@global.sql_mode= 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
2021-05-23