Joomla/将DreamHost的mysql数据导入及导出的问题
在我们用joomla做网站的过程中,一定有备份或移植网站的需求,但是因为环境中数据库的版本及设置的关系,在mysql的数据导出及导入的过程中经常出现中文乱码问题,本条目以DreamHost空间为例进行介绍。
环境[ ]
DreamHost上的数据库
版本:5.0.24a-standard-log
本地数据库[ ]
4.1.22-community-nt
MySQL 字符集: UTF-8 Unicode (utf8)
Mysql连接校对utf8_unicode_ci
解决方法[ ]
以下方法可以实现导入及导出都不是乱码
导出DH上的mysql5数据库:
不要用dh的phpmyadmin,直接用mysqldump,用法如下
mysqldump -hmysql.yourdomain.com --add-drop-table --default-character-set=latin1 --user=youruser --password=yourpassword --extended-insert=false databasename > databasename.sql
说明:使用时将代码的下面几项进行修改
1 mysql.yourdomain.com改成你自己的数据库所在的服务器的域名
2 youruser改成你自己的mysql用户名
3 yourpassword改成你自己的mysql相对应的密码
4 database改成你要备份的数据库各
5 databasename.sql改成你想要生成的sql文件名
导出后,你可以用记事本打开测试,如果你打开后发现中文没有显示乱码,祝贺你,成功了一半。
注:dh的mysql默认不能远程连接,要在后台修改才能使用上面的命令。我们可以用ssh连上mysql空间,再连接上mysql服务器,然后再使用mysqldump命令。但是,请注意又一个但是,使用mysqldump时要提醒你没有权限,这需要到后台设置权限。
数据库导入[ ]
将导出的数据库导入到本地或其它地方的数据库中:
注意做导入之前要修改一下导出的sql文件,否则导出时会出现错误,错误代码如下
ERROR 1071 (42000) at line 398: Specified key was too long; max key length is 1000 bytes
修改方法:打开刚才导出的sql文件,找到
UNIQUE KEY `section_value_value_aro` (`section_value`,`value`), UNIQUE KEY `jos_kaigacl_section_value_value_aro` (`section_value`,`value`),
将这两行注释,也就是改成
#UNIQUE KEY `section_value_value_aro` (`section_value`,`value`), #UNIQUE KEY `jos_kaigacl_section_value_value_aro` (`section_value`,`value`),
保存就ok了。
现在开始导入了,这里有两种方法,一是使用phpmyadmin,先建一个同名数据库,编码选默认的utf8,然后选择这个数据库,然后选择导入,选择刚才导出的文件即可,还有一种方法是使用mysql命令:
mysql --default-character-set=utf8 databasename -hhostname -uusername -pyourpassword < d:\database.sql