如何更改现有mysql数据库的排序规则?

bjp0bcyl  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(420)

如何更改现有mysql数据库的排序规则?
这是一个Drupal8站点
目前我的数据库是用utf8\u general\u ci排序
是否可以转换排序规则为utf8mb4\u unicode\u ci的现有数据库?
是否存在损坏数据库的风险?

编辑
最后,表格的格式是utf8\u general\u ci
为什么写在“操作”选项卡utf8\u general\u ci中?
utf8mb4\u general\u ci和utf8mb4\u unicode\u ci有什么区别?
目前推荐哪种“排序规则”?

dgenwo3n

dgenwo3n1#

你可以用 ALTER DATABASE 查询:

ALTER DATABASE databasename COLLATE utf8mb4_unicode_ci;

这只是更改了创建新表时使用的数据库的默认排序规则,并不修改任何现有表。但是,文档中提到了有关存储例程的警告:
如果更改数据库的默认字符集或排序规则,则必须删除并重新创建使用数据库默认值的存储例程,以便它们使用新的默认值(在存储例程中,如果未显式指定字符集或排序规则,则具有字符数据类型的变量将使用数据库默认值。

vql8enpb

vql8enpb2#

更改数据库的排序规则只会影响您在该数据库中创建的新表,但很容易做到:从数据库的“操作”选项卡中查找“排序规则”下拉列表:

您还可以从每个表的“操作”选项卡进一步类似地更改表级排序规则。
现在,如果您想更改现有的数据,它会变得更加困难。您可以使用phpmyadmin来执行此操作,但应该首先备份数据库。在“表级结构”选项卡中,单击“更改”链接以编辑单个列,或从同一列中同时编辑多个列。在那里,您可以更改现有数据,phpmyadmin将尝试转换它。这应该是可行的,但是在更改排序规则时(特别是当新排序规则中不存在字符时)总是有数据丢失或损坏的可能性,因此会显示一个警告:

相关问题