使用扩展字符集的唯一列上的Mysqldump错误
我正在使用mysqldump,使用一些基本选项,将一些phpBB论坛从一台服务器备份到另一台服务器:使用扩展字符集的唯一列上的Mysqldump错误,mysql,character-encoding,unique,mysqldump,phpbb,Mysql,Character Encoding,Unique,Mysqldump,Phpbb,我正在使用mysqldump,使用一些基本选项,将一些phpBB论坛从一台服务器备份到另一台服务器: mysqldump -h[server] --create-options --add-drop-database -R -E -B [database] 在执行此操作时,出现了如下错误: ERROR 1062 (23000) at line 9322: Duplicate entry '?????' for key 'wrd_txt' 在phpBB论坛中,这是一个表上的唯一键,表中的每个单
mysqldump -h[server] --create-options --add-drop-database -R -E -B [database]
在执行此操作时,出现了如下错误:
ERROR 1062 (23000) at line 9322: Duplicate entry '?????' for key 'wrd_txt'
在phpBB论坛中,这是一个表上的唯一键,表中的每个单词都被注册和计数。问题似乎是:
当mysqldump转储一个双精度值时,它使用的精度不够
区分一些接近的值和可能不足的值
精度从原始数据库中重新创建精确值。如果
双精度值是主键或唯一索引的一部分,用于恢复
此输出中的数据库失败,出现重复密钥错误
这是由于在我们的论坛上一些关于cirilic字母表的帖子引起的;mysqldump似乎将cirilic字符作为一个简单的值并将其截断,因此每个字符在使用cirilic字母表字符时似乎都是一样的,表示为?在这种情况下。这会导致在唯一键列中遇到相同大小的字符串的重复值
是否有任何方法可以使用其他选项或通过其他工具使用双精度执行转储??还是一种在转储时避免此问题的方法
为了记录在案,由于表格上的cirilic单词是由于垃圾邮件才出现的,我们只对拉丁字符感兴趣,所以我使用这个命令了解了它们,也许它对任何人都有用
delete from [table] where NOT HEX([column]) REGEXP '^([0-C][0-9A-F])*$';
提前多谢