注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oracle、MySQL资料及经验

.

 
 
 

日志

 
 

MySQL已有的数据库或表修改字符集  

2015-11-18 17:02:10|  分类: MySQL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
对于已有的数据库或表不能通过 alter database character set XXX或alter table tablename character set XXX方式修改字符集,这种方式只是对新建的表或新插入的记录生效,对已经存在的表或记录修改字符集,必须通过将表数据导出,然后修改字符集,最后重新导入方式才可以。
以下是将库tdb字符集由utf8转为utf8mb4。

1. 确保数据不可更新,导出该库的数据
mysqldump -usystem -p123456  --socket=/data/mysqldata/3306/mysql.sock  --quick  --extended-insert  --default-character-set=utf8  tdb > tdbdata.sql
    参数说明:
    --quick: 用于转储大的表,强制mysqldump从服务器一次一行的检索数据,而不是一次检索所有的行,并输出前CACHE到内存中。
    --no-create-info: 不创建create table语句。
    --extended-insert:  使用包括几个Values列表的多行insert语法,这样文件更小,IO更少。
    --default-character-set=utf8mb4:  按照原有字符集导出数据,这样导出的文件中,所有中文都是可见的,没有乱码。
2. 编辑tdb.sql
    将utf8替换为utf8mb4, 文件最上端添加set names utf8mb4; 或修改系统服务端和客户
3.  把tdb库删库重建 
    drop database tdb; create database tdb DEFAULT CHARACTER SET utf8mb4;
4. 创建表结构及数据
    mysql -usystem -p123456 --socket=/data/mysqldata/3306/mysql.sock  tdb < tdbdata.sql

注意:目标字符集要大于源字符集,否则可能丢数据。
  评论这张
 
阅读(155)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017