科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道利用phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5

利用phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

利用phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5

作者:ddvip 来源:ddvip 2009年12月22日

关键字: PhpMyAdmin MySQL PHP

  • 评论
  • 分享微博
  • 分享邮件

利用phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5

 

通过对比用phpMyAdmin从MySQL和MySQL5导出wordpress数据的不同点,从而解决迁移中的出错问题,这个解决方法不是仅用在迁移Wordpress数据上,实际上是通用的。

  利用phpMyAdmin(MySQL&phpMyAdmin安装于Win下)在MySQL4中选择数据库“导出”需要的wordpress数据,如图选择“另存为文件”这样就得到一个后缀为.sql的导出文件保存在本地机子上。

利用phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5

  用phpMyAdmin打开MySQL5,如图默认新建一个数据库。

利用phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5

  在“import”导入需要的数据,如图,成功后配置好数据库链接文件,即可以浏览了。

  注意,文件字符集一定要选择latin1,这是在创建MySQL数据库时默认的。

利用phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5

  上图中导入文件最大为2048k,这是收到php.ini文件控制的,通过修改upload_max_filesize,memory_limit和post_max_size可以改变这个值。

  但是这样使用起来没有问题,但是如果用phpMyAdmin去看数据库表,会发现中文全部是乱码,就是上面说的文件是字符集是latin1的问题。

  其实,在导出数据的时候,如果不选择“另存为文件”时,会导出一段SQL语句,如果把这个语句直接放到phpMyAdmin中执行,会出现如图错误:

利用phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5

  这个错误就是因为有中文字符,而字符集是latin1造成的。所以这种情况下,需要修改字符集。

  经过对比发现,同样的表在MySQL4中导出结果如下:

CREATE TABLE `dwn_post2cat` (
`rel_id` bigint(20) NOT NULL auto_increment,
`post_id` bigint(20) NOT NULL default '0',
`category_id` bigint(20) NOT NULL default '0',
PRIMARY KEY (`rel_id`),
KEY `post_id` (`post_id`,`category_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;

  在MySQL5中到处结果如下:

CREATE TABLE `dwn_post2cat` (
`rel_id` bigint(20) NOT NULL auto_increment,
`post_id` bigint(20) NOT NULL default '0',
`category_id` bigint(20) NOT NULL default '0',
PRIMARY KEY (`rel_id`),
KEY `post_id` (`post_id`,`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

  不同点就在最后一句,所以只需要把所有到处数据中

  ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;

  改成

  ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;

  然后再到phpMyAdmin中执行SQL,SQL执行成功。

  但是此时却出现乱码,这是Wordpress从MySQL 4.0x 版本以下升级到了4.1x以上遇到的问题。

  彻底解决编码问题就是统一用UTF8编码,首先, 将Wordpress 的wp-includes的wp-db.php,在这句后面

  $this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);

  加一句:

  $this->query("SET NAMES 'utf8'");

  这样就可以保证apche和MYSQL之间传递的是UTF8编码

  这样就完工了。

  MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。这样就可以根据数据表不同的用处是用不同的存储类型。

  另外,MyISAM类型的二进制数据文件可以在不同操作系统中迁移。也就是可以直接从Windows系统拷贝到linux系统中使用。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章