利用phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5
2010-10-01 11:13:49 来源:WEB开发网通过对比用phpMyAdmin从MySQL和MySQL5导出wordpress数据的不同点,从而解决迁移中的出错问题,这个解决方法不是仅用在迁移Wordpress数据上,实际上是通用的。
利用phpMyAdmin(MySQL&phpMyAdmin安装于Win下)在MySQL4中选择数据库“导出”需要的wordpress数据,如图选择“另存为文件”这样就得到一个后缀为.sql的导出文件保存在本地机子上。
phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5" onload="return imgzoom(this,550);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>
用phpMyAdmin打开MySQL5,如图默认新建一个数据库。
phpMyAdmin把wordpress数据从MySQL4迁移到MySQL5" onload="return imgzoom(this,550);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>
在“import”导入需要的数据,如图,成功后配置好数据库链接文件,即可以浏览了。
注意,文件字符集一定要选择latin1,这是在创建MySQL数据库时默认的。
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中执行,会出现如图错误:
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
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接