旧环境:
mysql4.1 表和数据为latin1格式
tomcat4.1
JDBC驱动: mm.mysql-2.0.4-bin.jar
新环境:
mysql5.0 表和数据需转换成UTF8格式
tomcat5.0
JDBC驱动: mysql-connector-java-3.0.17-ga-bin
问题:
Windows环境的mysql4.1导入linux环境的mysql5.0出现乱码。
步骤:
1. 进入mysql4.1的bin目录下,导出表结构和表数据,命令如下:
导出表结构(只有建表信息,没有建库信息和数据):
mysqldump --default-character-set=latin1 --set-charset=utf8 -uroot -ppassword -n -d --opt --skip-set-charset databasename>d:/databaselatin1table;
mysqldump --default-character-set=latin1 --set-charset=utf8 -uroot -ppassword -n -d --opt --skip-set-charset databasename>d:/databaselatin1table;
导出数据(只有数据,不包括建库和建表信息):
mysqldump --default-character-set=latin1 --set-charset=utf8 -uroot -ppassword –n –t -–opt--skip-set-charset
mysqldump --default-character-set=latin1 --set-charset=utf8 -uroot -ppassword –n –t -–opt--skip-set-charset
sinohub>d:/databaselatin1data;
2. 进入导出表和数据的根目录下,把sql文件的字符格式由latin1转换成utf8.
sed -e 's/latin1/utf8/g' -i ./ databaselatin1table
sed -e 's/latin1/utf8/g' -i ./ databaselatin1data
3. 在新环境下以UTF8格式新建数据库newdatabasename。
4. 导入表结构和数据
mysql -uroot -pLetmein. --default-character-set=utf8 newdatabasename< databasetable
mysql -uroot -pLetmein. --default-character-set=utf8 newdatabasename< databasedata
备注:之所以把表结构和数据分开来导,在执行建表的时候可能会报错,方便缩小出问题的地方