首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在MYSQL中将所有表和字段更改为utf-8-bin归类的脚本

在MYSQL中将所有表和字段更改为utf-8-bin归类的脚本
EN

Stack Overflow用户
提问于 2008-09-20 04:58:02
回答 11查看 74.7K关注 0票数 56

是否有可以运行的SQLPHP脚本来更改数据库中所有表和字段的默认排序规则?

我可以自己写一个,但我认为这应该是在像这样的网站上容易获得的东西。如果我能在别人发布之前自己想出一个,我会自己发布的。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2008-09-19 21:01:16

注意!如果你真的将utf存储为另一种编码,你的手头可能会变得一团糟。先后退。然后尝试一些标准方法:

例如http://www.cesspit.net/drupal/node/898 http://www.hackszine.com/blog/archive/2007/05/mysql_database_migration_latin.html

我不得不将所有文本字段转换为二进制,然后再转换回varchar/text。这救了我的命。

我的数据是以latin1格式存储的UTF8。我做了什么:

删除索引。将字段转换为二进制。转换为UTF8-通用配置项

如果您的on LAMP,在与数据库交互之前,不要忘记添加set NAMES命令,并确保您设置了字符编码标头。

票数 23
EN

Stack Overflow用户

发布于 2009-03-21 18:41:36

可以在一个命令中完成(而不是PHP的148个命令):

代码语言:javascript
复制
mysql --database=dbname -B -N -e "SHOW TABLES" \
| awk '{print "SET foreign_key_checks = 0; ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; SET foreign_key_checks = 1; "}' \
| mysql --database=dbname &

你一定会喜欢命令行..。(您可能需要对mysql使用--user--password选项)。

编辑:为了避免外键问题,增加了SET foreign_key_checks = 0;SET foreign_key_checks = 1;

票数 86
EN

Stack Overflow用户

发布于 2008-09-19 21:04:36

此PHP代码段将更改数据库中所有表的排序规则。(它取自this site。)

代码语言:javascript
复制
<?php
// your connection
mysql_connect("localhost","root","***");
mysql_select_db("db1");

// convert code
$res = mysql_query("SHOW TABLES");
while ($row = mysql_fetch_array($res))
{
    foreach ($row as $key => $table)
    {
        mysql_query("ALTER TABLE " . $table . " CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci");
        echo $key . " =&gt; " . $table . " CONVERTED<br />";
    }
}
?> 
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/105572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档