我正在从另一台服务器迁移数据库,并使用phpMyAdmin生成一个sql转储。问题出现在text
列插入中,显然导出的数据只是稍微过长。我理解如何关闭STRICT模式,但这只会导致插入的数据被截断,这不是我想要的。我不知道除非phpMyAdmin以某种方式在字段中添加字符,否则导出的数据可能会再次插入太长时间。
text
字段的最大长度为65,535,我插入的内容只有几百个字符太长。作为一种解决方法,我将更改insert语句以将字段创建为longtext
,但我真的想知道为什么我的导出不可导入以及如何纠正它。
答案 0 :(得分:0)
在这里回答我自己的问题。显然phpMyadmin将换行符导出为\r\n
。我做了一些关于这是bug in some versions of 4.6的阅读 - 但是我正在使用v4.7并且它仍然表现出这种行为。简而言之,一个简单的换行变为 4个字符 - 所以在一个text
字段上,正好是65,535个字符(可能在过去被截断),导出的数据现在比实际存在的更长在表中。
对我来说,解决方法是在vim中打开文件并执行一个简单的操作:
:%s#\\r\\n#\r#g
用实际换行符替换所有这些字符。