gpt4 book ai didi

mysql - ALTER DATABASE 更改 COLLATE 不起作用

转载 作者:可可西里 更新时间:2023-11-01 07:27:34 24 4
gpt4 key购买 nike

我在 Bluehost 上使用 Django。我为用户生成的输入创建了一个表单,但是来自该表单的 unicode 输入无法存储或显示字符。所以我做了一个 SO 和谷歌搜索,我应该改变我的数据库的整理和字符集。我运行这个 sql

ALTER DATABASE learncon_pywithyou CHARACTER SET utf8 COLLATE utf8_unicode_ci;

来自 python27 manage.py dbshel​​l,它启动了一个 mysql shell,屏幕上显示的是查询正常,1 行受影响(0.00 秒)

所以我假设问题已经解决,但实际上并没有。这个sql没有做任何事情,因为我后来在Bluehost提供的phpMyAdmin中找到了它。所有表的所有Varchar字段仍然在lantin1_swedish_ci中整理。

因此假设 alter table 应该起作用。我在 mysql 上运行这个alter table mytable character set utf8 collat​​e utf8_unicode_ci;

虽然在屏幕上它显示 查询正常。 4 行受影响,它实际上也没有做任何事情,mytable 中那些字段的整理根本没有改变。

所以我最终在 phpMyAdmin 中为 mytable 手动更改字段并且这有效,现在我能够使用 unicode 插入到这个表中并且它们也正确显示,但我有大约 20 个这样的表,我不想手动将它们一一更改。

我们是否有一种简单有效的方法来更改每个字段的 Collat​​e 以存储和显示正确的 unicode?

最佳答案

在数据库级别更改排序规则会为新对象设置默认值 - 现有排序规则不会更改。

类似地,在表级别,only new columns (请参阅底部的评论)受此影响:

alter table mytable character set utf8 collate utf8_unicode_ci;

但是,要转换现有列的排序规则,需要添加convert to:

alter table mytable convert to character set utf8 collate utf8_unicode_ci;

关于mysql - ALTER DATABASE 更改 COLLATE 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21354145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com