我需要将一个列从一个表转移到另一个表。源表具有与目标表不同的排序规则(latin1_general_ci 和 latin1_swedish_ci)。
我用
UPDATE target
LEFT JOIN source ON target.artnr = source.artnr
SET target.barcode = source.barcode
我得到一个“非法的归类组合”。
有什么快速修复方法可以在不更改任何一个表的情况下使它正常工作?我尝试使用 CONVERT 和 COLLATE 以 UTF-8 运行整个操作,但这没有帮助。 “条形码”仅包含数字数据(即使它们都是 VARCHAR),因此无论哪种方式都不用担心排序规则。我只需要这样做一次。
Edit: I sorted it using a
CAST(fieldname as unsigned)
on every field involved. I was able to do that in this case because only numeric data was affected, but it would be nice to know a more general approach to this, so I am leaving the question open.
最佳答案
I tried CONVERT and COLLATE to run the whole operation in UTF-8, but that didn't help.
这让我很烦恼,所以今天我创建了这些表并成功运行了这个表:
UPDATE target
LEFT JOIN source ON( target.artnr = source.artnr COLLATE latin1_swedish_ci )
SET target.barcode = source.barcode
关于mysql - mySQL 中的非法混合排序规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2327778/