mysql表排序怎么设置,关于mysql:如何更改表的默认排序规
则?
使⽤默认排序规则latin1_general_ci创建表;
号
将各列的排序规则显⽰为"Latin1_General_Ci"。
那么alter table命令的效果是什么呢?
更改数据库排序规则可能重复
你可能希望改变正确的答案,因为我和许多其他⼈似乎都同意第⼆个答案是正确的。
@Gregmiernicki完成了。
要更改包括现有列在内的表的默认字符集和排序规则(请注意convert to⼦句):
alter table convert to character set utf8mb4 collate utf8mb4_unicode_ci;
由于⼀些评论的提⽰,编辑了答案:
Should avoid recommending utf8. It's almost never what you want, and often leads to unexpected messes. The utf8 character set is not fully compatible with UTF-8. The utf8mb4 character set is what you want if you want UTF-8. – Rich Remer Mar 28 '18 at 23:41
和
正是我在的,谢谢。其他答案解释了这个问题,但这个答案有解决办法。
我同意。这绝对是我搜索的⽬的。
视图怎么样?我需要换个地⽅看……
更改默认字符集的含义是什么?它是否更新现有数据,因此需要运⾏整个表并进⾏更新、锁定它等?
utf8_bin更好,不是吗?utf8_bin和utf8_unicode_ci有什么区别?
这只是我⽤过的⼀个例⼦。区别在于utf8_bin区分⼤⼩写,utf8_unicode_ci不区分⼤⼩写。⼀个不⼀定⽐另⼀个好——⽤任何适合你需要的东西。
django怎么学
这很好地解决了我使⽤所谓的"波兰字符"的问题(作为Django MySQL项⽬中的默认排序规则,拉丁瑞典语⼀直将记录更改为问号字符串),⾮常感谢!
@jasomdotnet您现在应该使⽤utf8mb4_unicode_ci stackoverflow/questions/766809/…
@baptx是的,我的数据库已经在utf8mb4_unicode_ci:)
应避免推荐utf8。这⼏乎不是你想要的,⽽且常常导致意想不到的混乱。utf8字符集与utf-8不完全兼容。如果需要UTF-8,则需要使⽤utf8mb4字符集。
这似乎很重要,我很⾼兴看到这些评论,并感谢@richremer。尼基,我认为你应该在你的答案中编辑这个,考虑到有多少观点。请参见sql/doc/refman/8.0/en/charset-unicode-utf8.html和stackoverflow/q/30074492/772035。
MySQL有4个排序规则级别:服务器、数据库、表、列。如果更改服务器、数据库或表的排序规则,则不会更改每列的设置,但会更改默认排序规则。
例如,如果更改数据库的默认排序规则,则在该数据库中创建的每个新表都将使⽤该排序规则;如果更改表的默认排序规则,则在该表中创建的每个列都将获得该排序规则。
实际上,MySQL有五个排序级别,有⼀个字符集级别的默认排序设置,很多⼈都忘记了。
还有连接整理show variables like"collation%";,所以总共是6个。
它为表设置默认的排序规则;如果您创建⼀个新列,它应该与拉丁语"常规"进⾏排序,我想。尝试为单个列指定排序规则,看看是否有效。MySQL在处理这个问题的⽅式上有⼀些⾮常奇怪的⾏为。
可能需要更改架构⽽不仅仅是表
ALTER SCHEMA `` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci (as Rich said -
utf8mb4);
(玛丽亚德10)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论