修复 mysql 数据库上的字符集和排序规则的最简单方法?

发布于 2024-11-18 18:52:04 字数 271 浏览 2 评论 0原文

因为 mysql 默认设置对 Unicode 不太友好,所以经常会出现数据库字符集损坏的情况。

通常您只想将其重新配置为使用 utf8 字符集和 utf8_unicode_ci 排序规则。

对于给定的数据库执行此操作最简单的命令是哪一个?

警告:不要发布未经测试的脚本的链接,我测试了至少 5 个脚本(用 bash/perl/php/python 编写),它们都无法修复数据库,其中排序规则在数据库和表级别设置正确,但在列级别。

Because mysql default settings are not quite Unicode friendly it can happen quite often to endup with a database with broken charset.

Usually you just want to reconfigure it to use utf8 character set and utf8_unicode_ci collation.

Which is the easiest command to do this for a given database?

Warning: do not post links to untested scripts, I tested at least 5 of them (written in bash/perl/php/python) and they all failed to repair a database where the collation was set correctly at database and table level but not at column level.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

仲春光 2024-11-25 18:52:04

我设法自己编写了一个解决方案并发布到:

https://gist.github.com/1068021

  • mysqldump 已损坏,即使告诉它不包含 CHARSET,如果我在列级别设置它,它也会包含它们。
  • 此解决方案不假定 mysql 服务器级别的默认字符集,因此它将其设置在数据库级别并将其重置为表和列级别的默认值。

免费发布错误或补丁,我会尽力快速解决它们。

I managed to write a solution myself and published to:

https://gist.github.com/1068021

Notes:

  • mysqldump is borken, even if tell it to not include CHARSET it will include them if it i set at column level.
  • this solution does not assume a default charset at mysql-server level so it set it at database level and resets it to defaults for table and column level.

Feed free to post bugs or patches, I will try to solve them fast.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文