如何更改现有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有什么区别?
目前推荐哪种“排序规则”?
2条答案
按热度按时间dgenwo3n1#
你可以用
ALTER DATABASE
查询:这只是更改了创建新表时使用的数据库的默认排序规则,并不修改任何现有表。但是,文档中提到了有关存储例程的警告:
如果更改数据库的默认字符集或排序规则,则必须删除并重新创建使用数据库默认值的存储例程,以便它们使用新的默认值(在存储例程中,如果未显式指定字符集或排序规则,则具有字符数据类型的变量将使用数据库默认值。
vql8enpb2#
更改数据库的排序规则只会影响您在该数据库中创建的新表,但很容易做到:从数据库的“操作”选项卡中查找“排序规则”下拉列表:
您还可以从每个表的“操作”选项卡进一步类似地更改表级排序规则。
现在,如果您想更改现有的数据,它会变得更加困难。您可以使用phpmyadmin来执行此操作,但应该首先备份数据库。在“表级结构”选项卡中,单击“更改”链接以编辑单个列,或从同一列中同时编辑多个列。在那里,您可以更改现有数据,phpmyadmin将尝试转换它。这应该是可行的,但是在更改排序规则时(特别是当新排序规则中不存在字符时)总是有数据丢失或损坏的可能性,因此会显示一个警告: