我正在尝试更改一堆列的排序规则。我不想弄乱我当前的数据,所以我一直在考虑做类似 this answer 的事情:
ALTER TABLE something MODIFY name BLOB;
The next step is to convert the column to a nonbinary data type with the proper character set:
ALTER TABLE something MODIFY name VARCHAR(12) CHARACTER SET hebrew COLLATE hebrew_bin;
Or Try with this:
ALTER TABLE something MODIFY name VARCHAR(12) CHARACTER SET utf8 COLLATE utf8_unicode_ci
不幸的是,mysql 不允许我将索引列转换为 blob。
SQL error: [1170] - BLOB/TEXT column 'baz' used in key specification without a key length
Query:
ALTER TABLE foo.bar MODIFY baz blob;
有办法解决这个问题吗?或者我是否需要以某种方式删除索引并在转换后重建它们?
最佳答案
除非字符集
错误但数据“正确”,否则不要执行“两步更改”。如果您想同时转换CHARACTER SET
和数据,请使用
更改表内容转换为字符集...;
请参阅 my blog 中的案例 5 ,正如您可能猜到的那样,还有其他情况。
至于错误 1170——这与某些 INDEX
有关。在我帮助您之前,请确定它是否相关。
关于mysql - 更改索引列上的排序规则而不更改数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31167480/