Mysql数据太长了

时间:2016-03-01 00:23:36

标签: php mysql doctrine-orm

Context,使用doctrine将数组作为longtext存储在mysql列中。收到了一些Notice: unserialize(): Error at offset 250 of 255 bytes。因此,我做了一些回溯以实现序列化字符串被截断,因为它对于长文本列来说太大了。我真的怀疑是这样的。这个字符串距离4GB很近。

来自this question的人建议查看SET max_allowed_packet,但我的是32M。

 a:15:{i:0;s:7:"4144965";i:1;s:7:"4144968";i:2;s:7:"4673331";i:3;s:7:"4673539";i:4;s:7:"4673540";i:5;s:7:"4673541";i:6;s:7:"5138026";i:7;s:7:"5140255";i:8;s:7:"5140256";i:9;s:7:"5140257";i:10;s:7:"5140258";i:11;s:7:"5152925";i:12;s:7:"5152926";i:13;s:7:"51

Mysql表排序规则:utf8_unicode_ci

非常感谢任何帮助!!

完全错误

Operation failed: There was an error while applying the SQL script to the database.
ERROR 1406: 1406: Data too long for column 'numLotCommuns' at row 1
SQL Statement:
UPDATE `db`.`table` SET `numLotCommuns`='a:15:{i:0;s:7:\"4144965\";i:1;s:7:\"4144968\";i:2;s:7:\"4673331\";i:3;s:7:\"4673539\";i:4;s:7:\"4673540\";i:5;s:7:\"4673541\";i:6;s:7:\"5138026\";i:7;s:7:\"5140255\";i:8;s:7:\"5140256\";i:9;s:7:\"5140257\";i:10;s:7:\"5140258\";i:11;s:7:\"5152925\";i:12;s:7:\"5152926\";i:13;s:7:\"51}' WHERE `id`='14574'

2 个答案:

答案 0 :(得分:2)

该列是tinytext ...

我能从中理解的唯一逻辑解释是,当我在早期版本的学说中创建我的表时,默认是小文本

OR

我记得在doctrine注释中更改了列的类型,并且更新可能没有完全正确地转换类型。

下划线,即使您使用orm也要检查您的类型。

答案 1 :(得分:0)

您的专栏必须已定义为varchar(250)。 您需要先将其转换为longtext