0

(编辑 2:谢天谢地,信息已经进来。它只能通过 ODBC 访问,我可以在其中设置连接字符集以匹配我为 MySQL 数据库设置的任何内容。所以整个问题简化为:如果我同时设置 ODBC 和数据库到 UTF-8,我完成了吗,它不会破坏数据吗?(服务器/数据库字符集是 latin1)。我很乐意接受简单的是或否,并简要解释原因。

--------------- 其余的是原始背景信息,不再相关。--------------

(编辑:澄清:数据已经正确导入,这只是关于连接字符集的问题。)

我正在尝试决定是否将连接字符集更改为我新创建的 MySQL 数据库的排序规则和服务器。

它的服务器和排序规则字符集设置为与运行 MySQL 4.1 - latin1的旧服务器相同。一些数据已经用 mysql.exe 导入并被验证为正确。

当服务器管理员安装 MySQL 5.5 并在某个时间点创建新数据库时,连接字符集没有从默认的 UTF-8 更改。

旧服务器报告没有为排序规则或连接字符集设置变量,所以我的问题是:(我假设当前设置 UTF-8 应该是最正确的路线)

  • 在哪里寻找将其设置为的内容(经验提示)
  • 如果我选择将其设置为 latin1,如果脚本写入数据库某处可能会再次损坏数据
  • 或者它是否可以随意打开和关闭而不会损坏数据,即我是否可以推迟决定。

数据库服务器管理员没有给我答案的信息,并且由于旧数据库中缺少信息,我想确保但不能。

这是一个 1GB 的 .sql 文件,需要在 TextPad 中逐步编辑才能导入,因此了解这是否是关键设置可以节省时间。

目前我最好的计划是不更改设置、导入数据和备份 - 如果脚本由于连接字符集设置不正确而损坏数据,则恢复备份。你觉得这个计划有问题吗?

4

2 回答 2

0

哦,天哪,我真的应该花更多时间阅读您的问题,是的,拥有数据库的全部意义在于数据的持久性,如果由于不正确的字符集问题而继续恢复备份,则数据不会持久,更好的计划是更新您的脚本,以便所有人都使用相同的字符集,并将数据库中不在该字符集中的任何字段转换为相同的字符集。

于 2012-10-12T10:12:45.033 回答
0

迁移数据时,

  1. 将目标数据字符集+排序规则设置为与古代 MySQL 数据库版本相同。您可能必须将 Type= 更改为 Engine=,timestamp(xx) 更改为 timestamp,以及一些float(xx,xx) 以使用 f.ex 在巨大的 sqldump 中加倍。使用 mysql.exe 导入之前的 TextEdit

  2. 找出连接将写入表的内容(如果有)以及它们的源字符集是否与数据库的不同。如果是这样,请修改数据源的连接属性,以便连接将源数据转换为数据库字符集。

于 2012-10-17T09:01:01.467 回答