WEB开发网
开发学院数据库MySQL 利用phpMyAdmin把wordpress数据从MySQL4迁移到MyS... 阅读

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

 2010-10-01 11:13:49 来源:WEB开发网   
核心提示:通过对比用phpMyAdmin从MySQL和MySQL5导出wordpress数据的不同点,从而解决迁移中的出错问题,利用phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5,这个解决方法不是仅用在迁移Wordpress数据上,实际上是通用的,另外,MyISAM类型的二进制数据文件可以在不同操作

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

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

利用<a target=phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5" onload="return imgzoom(this,550);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>

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

利用<a target=phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5" onload="return imgzoom(this,550);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>

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

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

利用<a target=phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5" onload="return imgzoom(this,550);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>

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

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

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

利用<a target=phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5" onload="return imgzoom(this,550);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>

这个错误就是因为有中文字符,而字符集是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系统中使用。

Tags:利用 phpMyAdmin wordpress

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接