您当前位置: 圣才学习网首页 >> IT类 >> MySQL专题

MySQL4到MySQL5数据迁移问题(以wordpress为例)(2)

扫码手机阅读
用圣才电子书APP或微信扫一扫,在手机上阅读本文,也可分享给你的朋友。
评论(0
   
  来源:网络 作者:未知
 
  这个错误就是因为有中文字符,而字符集是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 ;
 
  不同点就在最后一句,所以只需要把所有到处数据中
 
  ENGINEMyISAM DEFAULT CHARSETutf8 AUTO_INCREMENT14
 
  改成
 
  ENGINEMyISAM DEFAULT CHARSETutf8 AUTO_INCREMENT14
 
  然后再到phpMyAdmin中执行SQLSQL执行成功。
 
  但是此时却出现乱码,这是WordpressMySQL 4.0x 版本以下升级到了4.1x以上遇到的问题。
 
  彻底解决编码问题就是统一用UTF8编码,首先,Wordpress wp-includeswp-db.php,在这句后面
 
  $this->dbh @mysql_connect$dbhost $dbuser $dbpassword);
 
  加一句:
 
  $this->query"SET NAMES 'utf8'");
 
  这样就可以保证apcheMYSQL之间传递的是UTF8编码
 
  这样就完工了。
 
  MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。这样就可以根据数据表不同的用处是用不同的存储类型。
 
  另外,MyISAM类型的二进制数据文件可以在不同操作系统中迁移。也就是可以直接从Windows系统拷贝到linux系统中使用。
 
相关阅读
 
 

小编工资已与此挂钩!一一分钱!求打赏↓ ↓ ↓

如果你喜欢本文章,请赐赏:

已赐赏的人
最新评论(共0条)评论一句