Max*_*xer 5 mysql mysqldump character-set mysql-4
我正在接管一个旧数据库,在从我的转储中进行恢复测试时,我发现一个表被错误地备份,表定义被截断。
查看实时数据库,我发现了一个名称中带有特殊字符的列名。即列名是Località。
我当前的 mysql 转储产生以下内容:
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `contabilita_banche` (
`ID_Banca` int(6) unsigned NOT NULL default '0',
`Descrizione` varchar(70) default NULL,
`Località;
/*!40101 SET character_set_client = @saved_cs_client */;
Run Code Online (Sandbox Code Playgroud)
第一个问题是表并没有到此结束,Località后面还有其他字段,所以结构转储不完整。除此之外,转储不会引发任何错误,并且数据会正确转储到最后。
我尝试了几个命令,都没有成功:
mysqldump -r /tmp/cbnew2.sql --default-character-set=latin1 --no-tablespaces --skip-lock-tables --quick -u root -p -h host Dbname contabilita_banche
mysqldump -r /tmp/cbnew2.sql --default-character-set=utf8 --no-tablespaces --skip-lock-tables --quick -u root -p -h host Dbname contabilita_banche
Run Code Online (Sandbox Code Playgroud)
服务器版本是4.1.22-log,客户端5.5.38。有没有办法正确生成转储?
我尝试通过“adminer”(php mysql管理器)重命名表,但即使在那里,表名也不正确(老实说,根本没有显示)。我尝试重命名,但当然我生成了一个新的表列。
最后我不得不重新创建表格。
我设法从上面获得了大部分模式SHOW CREATE TABLE contabilita_banche\G。然后我使用数据进行转储,CREATE TABLE使用 utf-8 列名称调整命令并恢复新的转储。
非常感谢罗兰多的支持!