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'
答案 0 :(得分:2)
该列是tinytext
...
我能从中理解的唯一逻辑解释是,当我在早期版本的学说中创建我的表时,默认是小文本
OR
我记得在doctrine注释中更改了列的类型,并且更新可能没有完全正确地转换类型。
下划线,即使您使用orm也要检查您的类型。
答案 1 :(得分:0)
您的专栏必须已定义为varchar(250)
。
您需要先将其转换为longtext
。