mysql alter database,mysql – ALTER DATABASE改变COLLATE不工作

标签:

我在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 collat​​e中.

所以假设alter table应该可以工作.我在mysql上运行它

alter table mytable字符集utf8 collat​​e utf8_unicode_ci;

虽然在屏幕上显示查询确定.受影响的4行,它实际上什么也没做,mytable中那些字段的整理根本没有改变.

所以我最终手动更改phpMyAdmin中mytable的字段,这样可行,现在我可以在这个表中插入unicode并且它们也能正确显示,但我有大约20个这样的表,我不想改变它们一个一个人手动.

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

解决方法:

除了@StuartLC,

对于更改所有20个表charset和collat​​ion使用下面的查询,这里world是数据库名称

SELECT

CONCAT("ALTER TABLE ",TABLE_SCHEMA , ".",TABLE_NAME," CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci") AS AlterSQL

FROM information_schema.TABLES

WHERE TABLE_SCHEMA = "world";

以上将准备您需要运行的所有ALTER查询.

标签:

来源: https://codeday.me/bug/20190529/1175183.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值