【发布时间】:2015-06-07 11:36:13
【问题描述】:
我在网上搜索了一个解决方案,但我在网上找到的解决方案似乎都不起作用。
我的问题是我有一个 MySQL 转储(SQL 文件),其中包含以 UTF8 编码保存的希伯来文本值,当我使用“source [file]”导入它时,它会将希伯来字符保存为问号(??? )。
现在,当我查看 SQL 文件(cat [file])时,我可以正确看到希伯来语字符。
即使我尝试将“cat”直接提供的输出中的 SQL 命令复制并粘贴到 MySQL 命令行中,它也能正常工作。
只有当我使用“SOURCE [file]”时它才会失败(我需要它,因为它是一个巨大的文件)。
我还尝试了以下方法:
-
mysql -uroot -p[pass] --default-character-set=utf8,然后是 "SET NAMES utf8",然后是 "SOURCE [file]" - 给出问号。 - 登录 mysql 客户端,然后执行“
SET NAMES utf8”、“SET COLLATE utf8_bin”(这是数据库中所有表的设置)- 给出问号。 -
CREATE DATABASE [db_name] DEFAULT CHARACTER SET UTF8使用之前的设置(上面的第 2 部分)- 给出问号。 -
mysql -uroot -p[pass] --default-character-set=utf8 [db_name] < [file.sql]- 给出问号。 -
set character_set_filesystem utf8然后运行 source [file]- 给出问号。
这些都不能正常工作,唯一有效的是如果我直接从 cat 的输出复制+粘贴到 mysql 命令行,由于文件的长度(数百 MB),这不是一个选项。
请帮忙,谢谢!
【问题讨论】:
-
您在创建数据库时是如何设置它的排序规则的?
-
ALTER TABLE [dbname] COLLATE 'utf8_bin'。我也试过这个,也没有帮助。我实际上并不认为它真的是一个数据库问题,而是更多关于使用“SOURCE”时数据如何传输的问题。因为直接复制和粘贴有效。
-
SHOW VARIABLES LIKE 'character\_set\_%';也许你应该看看这个confluence.atlassian.com/display/CONFKB/…