mysql - 更改索引列上的排序规则而不更改数据

标签 mysql indexing blob collation

我正在尝试更改一堆列的排序规则。我不想弄乱我当前的数据,所以我一直在考虑做类似 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/

相关文章:

PHP MySQL 外部数据库连接超时

mysql - SQL:连接另一个表中的值

mysql - Zend 框架 : How to download file from mySql Blob field

javascript - 使用 blob 作为源图像

MySQL函数在时差计算上达到限制

mysql - SQL 适配器身份验证 - Worklight

Java堆空间错误

java - 类似于 Elasticsearch 的最多 1000 个 json 文件的解决方案

python - Pymongo返回没有_id的数据

php - OpenCart 用户数据库 [BLOB - 198B]