在不更改数据的情况下更改索引列的排序规则

Changing collation on indexed columns without changing data

我正在尝试更改一堆列的排序规则。我不想弄乱我当前的数据,所以我一直在考虑做一些类似 :

的事情

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 错误但数据是 'right',否则不要执行“两步更改”。如果要转换 both CHARACTER SET 和数据,请使用 ALTER TABLE something CONVERT TO CHARACTER SET ...;

参见 my blog 中的案例 5,您可能会猜到,还有其他案例。

至于错误 1170 -- 与某些 INDEX 有关。在我帮助你之前,请确定它是否相关。