我有安装WAMP的MySQL数据库版本5.1.36。我在Windows XP SP3上将其用于开发目的,并且其中包含一些数据, cyrillic ,并且所有这些表/列的排序规则都设置为utf8_general_ci
。
现在是时候将这个数据库转移到Debian Lenny的伪生产环境了。这里的MySQL版本是5.0.51a。
我尝试了以下内容:
.sql
文件保存为UTF8。mysqladmin -u root -p create nbs
最后,我尝试创建表并填充数据:
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_'在第1行
我猜想有些东西搞乱编码......但不知道如何以及在哪里。我想在SO上读到的类似问题是文本传输的二进制模式只会将换行符CRLF更改为LF(不知道这是否正确......)。我在这里错过了什么?
感谢。
答案 0 :(得分:4)
对于这种特殊情况,问题通过以下修改得以解决:
1)我在创建目标数据库时将初始整理设置为utf8_general_ci
,
2)我通过WinSCP以文本模式传输文件,
3)我将SET NAMES 'utf8' COLLATE 'utf8_general_ci';
添加到sql dump的顶部。
答案 1 :(得分: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 */;