现在的位置: 首页 > 综合 > 正文

mysql 3.23升级到mysql5及升级后搞定乱码

2013年10月05日 ⁄ 综合 ⁄ 共 1413字 ⁄ 字号 评论关闭
原贴:http://www.fingerling.cn/read.php?27

30

mysql 3.23升级到mysql5及升级后搞定乱码

发表时间 14:24   阅读次数 593   评论数 0   日志类别 IT教程 » 数 据 库
| |
  这两天升级服务器的数据库,网上都说升级mysql要从3升到5,要先升到4再升到5。fear2个G的数据库,想把我弄晕啊。早听说升这个不好整,先在虚拟机上装了个mysql5,然后本地开始导入试试。
我晕,全是乱码。anger
  在网上一通搜索,终于找着一篇解决办法,不容易啊!
导出数据(这时候mysql4一定是正常运行着,呵呵(废话))
如果mysqldump 版本是4
mysqldump -u xxx -p xxx DBNAME > DBNAME.sql            
如果mysqldump 版本是5
mysqldump -u xxx -p xxx –default-character-set=latin1 DBNAME > DBNAME.sql  
导入数据 确保mysql -V 的是5
运行
gbk 的这样 mysql -u xxx -p xxx -e “CREATE DATABASE `数据库名` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci”
utf8的mysql -u xxx -p xxx -e “CREATE DATABASE `数据库名`  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
mysql -u xxx -p xxx --default-character-set=编码 DBNAME < DBNAME.sql  
上面的编码有可能是 gbk 或者是 utf8

  照上面的方法测试成功,不过在实际导入的时候还是出了不少问题,头晕脑胀中,竟然不小心把一个400M数据库删除了,-_-!,还好事前备份了下。
  经过一番苦战,最终升级成功。
总结一下:
   1.用mysqldump导出的建表语句,在字段两边没有phpmyadmin那样加上``符号,如果字段名正好与mysql5的保留字一样,就会出 错。好几个数据库里面装了ourplus统计程序,里面的字段return就是mysql5的关键字。建议用phpmyadmin先导出表结构,再在 mysql5的phpmyadmin里面建表。然后在用mysqldump导出数据的时候加上-t参数只导出数据。
  2.对于大的数据库,在导 入数据时也有可能会出错,因为里面的数据可能带有不规则字符,比如/n,几百兆的数据库文件是不可能打开编辑的,只好牺牲一点啦。在导入数据的时候加上- f参数强制导入,会丢失一点数据,不过整体影响不大,像我导的论坛贴子几万条丢了一百多条吧。
  3.用上面的办法一般不用修改文件也不会出现乱码,对于UTF8格式的数据库,必须进行修改。
在用mysql_connect或mysql_pconnect连接数据库后,加上:mysql_query("SET NAMES 'UTF8'");语句,如下:

if (mysql_get_server_info()>4.1)
   mysql_query("SET NAMES 'UTF8'");
if (mysql_get_server_info()> '5.0')
   mysql_query("SET sql_mode=''");

Tags:

 

抱歉!评论已关闭.