对于整数为整数且允许为空的MySQL列,错误的整数值''

问题描述 投票:5回答:3

我正在努力将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中创建的那样,将空值视为空格。无论如何,我的生产机都可以毫无问题地运行脚本,但是在本地不会运行。

php mysql sql laravel laravel-4
3个回答
6
投票

我发现了我的问题。我的本地MySQL在严格模式下运行。此线程(General error: 1366 Incorrect integer value with Doctrine 2.1 and Zend Form update)的答案已解决。


0
投票

如果数据库列中已经包含与您要更改的数据类型不同的不同数据类型的值,则可能引发错误1366,例如,如果表的一列中已经有字符串值,则您将更改为tinyint。我曾经遇到这个。


-3
投票

为什么不尝试在插入之前将其强制转换为整数?

array( 'baths_full' => (int) $baths_full, ... )

like

"VALUES(".((int) $baths_full).")"
© www.soinside.com 2019 - 2024. All rights reserved.