phpMyAdmin导出导致错误代码:1406。列的数据太长

时间:2018-05-17 18:34:43

标签: mysql phpmyadmin

我正在从另一台服务器迁移数据库,并使用phpMyAdmin生成一个sql转储。问题出现在text列插入中,显然导出的数据只是稍微过长。我理解如何关闭STRICT模式,但这只会导致插入的数据被截断,这不是我想要的。我不知道除非phpMyAdmin以某种方式在字段中添加字符,否则导出的数据可能会再次插入太长时间。

text字段的最大长度为65,535,我插入的内容只有几百个字符太长。作为一种解决方法,我将更改insert语句以将字段创建为longtext,但我真的想知道为什么我的导出不可导入以及如何纠正它。

1 个答案:

答案 0 :(得分:0)

在这里回答我自己的问题。显然phpMyadmin将换行符导出为\r\n。我做了一些关于这是bug in some versions of 4.6的阅读 - 但是我正在使用v4.7并且它仍然表现出这种行为。简而言之,一个简单的换行变为 4个字符 - 所以在一个text字段上,正好是65,535个字符(可能在过去被截断),导出的数据现在比实际存在的更长在表中。

对我来说,解决方法是在vim中打开文件并执行一个简单的操作:

:%s#\\r\\n#\r#g

用实际换行符替换所有这些字符。