zoukankan      html  css  js  c++  java
  • Mysql Bacup & Restore

    服务器的mysql状态如下:

    Server version: 5.0.18-standard-log
    Protocol version: 10
    Server characterset: latin1
    Db characterset: latin1
    Client characterset: latin1
    Conn. characterset: latin1

    这样的编码在备份和恢复的时候会有问题,因此做了如下测试来保证其正确:

    1. 恢复到原数据库,恢复后编码不变,仍全是latin1。

    • 通过后台的worpress database backup 插件备份数据;
    • 创建新数据库,此时编码仍全是latin1;
    • 使用mysql> \. backup.sql 进行恢复,blog浏览显示正常,编码仍全是latin1;
    • 插入新数据,浏览正常;
    • 插入数据后再次备份,再次使用1、2、3恢复,正常。

    2. 恢复到原数据库,恢复后编码变为server和database编码是utf8,client和conn编码是latin1。

    • 通过后台的worpress database backup 插件备份数据;
    • 创建新数据库,此时编码仍全是latin1;
    • 修改backup.sql,在前面增加
      SET CHARACTER_SET_DATABASE = 'utf8';
      SET CHARACTER_SET_SERVER = 'utf8';
      两行;
    • 使用mysql> \. backup.sql 进行恢复,blog浏览显示正常,编码变为server和database编码是utf8,client和conn编码是latin1;
    • 插入新数据,浏览正常;
    • 插入数据后再次备份,再次使用1、2、3恢复,浏览正常。

    3. 恢复到另外一个数据库(目的数据库是4.1.18-nt,window安装时选择了多语言,服务端默认utf8,状态如下)。

    Server version: 4.1.18-nt
    Protocol version: 10
    Server characterset: utf8
    Db characterset: utf8
    Client characterset: latin1
    Conn. characterset: latin1

    • 通过 mysql> mysqldump -u ID -p -h hostname.samuelchen.net --default-character-set=latin1
      -set-charset=utf8 --skip-opt database_name> backup.sql 备份数据;
    • 创建新数据库,server和database编码是utf8,client和conn编码是latin1;
    • 修改backup.sql,在最前面增加 SET NAMES 'utf8';
    • 使用mysql> \. backup.sql 进行恢复,blog浏览显示正常,编码变为server和database编码是utf8,client和conn编码是latin1;
    • 插入新数据,正常;
    • 插入数据后再次备份,再次恢复,正常。
    • 恢复到1,2所示的latin1数据库,无须修伽,正常。
  • 相关阅读:
    jQuery鼠标事件
    jQuery阻止事件冒泡
    confirm() :带有指定消息和 OK 及取消按钮的对话框
    Win10 Nodejs搭建http-server注意点
    console.dir()可以显示一个对象所有的属性和方法
    git 每次commit之前都要重新配置config
    javascript构造函数类和原型prototype定义的属性和方法的区别
    CSS 超出部分显示省略号
    H5 与 IOS的爱恨情仇(兼容问题)
    ES6之reduce用法
  • 原文地址:https://www.cnblogs.com/Samuel/p/350691.html
Copyright © 2011-2022 走看看