MySQL UTF8 Windows 导出 - Linux 导入

Les*_*ess 2 mysql linux windows utf-8

我有安装 WAMP 的 MySQL 数据库版本 5.1.36。我将它用于 Windows XP SP3 上的开发目的,其中包含一些西里尔文数据,并且所有这些表/列的排序规则都设置为utf8_general_ci.

现在是时候将该数据库移至伪生产环境中,该环境位于 Debian Lenny 上。这里的 MySQL 版本是 5.0.51a。

我尝试了以下方法:

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

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

但是,这是我收到错误的地方,例如:

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

我想有些东西被编码搞砸了……但不知道如何以及在哪里。我想我在 SO 上的类似问题中读到了文本传输的二进制模式只会将换行符 CRLF 更改为 LF(不知道这是否正确......)。我在这里缺少什么?

谢谢。

Les*_*ess 6

对于这种特殊情况,通过以下修改解决了问题:

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