在不更改数据的情况下更改索引列的排序规则
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
有关。在我帮助你之前,请确定它是否相关。
我正在尝试更改一堆列的排序规则。我不想弄乱我当前的数据,所以我一直在考虑做一些类似
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
有关。在我帮助你之前,请确定它是否相关。