MySQL UTF8 Windows导出 – Linux导入

我有MySQL数据库版本5.1.36,与WAMP安装。 我在Windows XP SP3上将它用于开发目的,它有一些数据,它是西里尔语 ,所有这些表/列的sorting规则设置为utf8_general_ci

现在是把这个数据库迁移到Debian Lenny上的伪生产环境的时候了。 这里的MySQL版本是5.0.51a。

我尝试了以下内容:

  1. 我使用Windows上的phpmyadmin数据导出了数据库,并将.sql文件保存为UTF8。
  2. 然后,我将它通过WinSCP(默认和二进制传输设置)传输到Linux机器。
  3. 我通过命令行创build了数据库: mysqladmin -u root -p create nbs
  4. 最后,我试图创build表格并填写数据:

    mysql -u root -p --default-character-set=utf8 nbs < NBS_utf8_1.sql

但是,这是我得到的错误,如:

第1行中的错误1064(42000):您的SQL语法错误; 检查与您的MySQL服务器版本相对应的手册,以便在第一行使用CREATE TABLE IF NOT EXISTS `history_members` ( `id` int(11)NOT NULL AUTO_'

有些东西与编码混淆,我想…但不知道如何以及在哪里。 我想我在SO上读到类似的问题,即文本传输的二进制模式只会把CRLF换行换成LF(不知道这是否正确…)。 我在这里错过了什么?

谢谢。

Solutions Collecting From Web of "MySQL UTF8 Windows导出 – Linux导入"

对于这个特殊的情况,这个问题通过以下修改得以解决:

1)在创建目标数据库到utf8_general_ci时设置初始排序规则,
2)我通过WinSCP以文本模式传输文件,
3)我添加了SET NAMES 'utf8' COLLATE 'utf8_general_ci'; 到SQL转储的顶部。

下面是我发现使用远程shell粗略的SQL导入使用PhpMyAdmin:

  /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */;