2

我有 MySQL 数据库版本 5.1.36,随 WAMP 安装一起提供。我在 Windows XP SP3 上将其用于开发目的,其中包含一些数据,即cyrillic,并且所有这些表/列的排序规则都设置为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(不知道这是否正确......)。我在这里想念什么?

谢谢。

4

2 回答 2

6

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

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

于 2012-09-18T16:13:54.263 回答
0

这是我使用 PhpMyAdmin 使用远程 shell 进行粗略 SQL 导入时发现的:

 /*!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 */;
于 2016-04-23T23:18:13.780 回答