Mysql转储还原

我遇到了一个大麻烦。 我没有设置兼容模式(我没有意识到这个问题)使用版本5.0.77的MySQL转储。 实际的mysql服务器是4.0.18版本。 今天我们的数据库崩溃了。 很多表丢失了。 尝试恢复转储时,它将返回错误“错误1193在行18:未知的系统variables'character_set_client'”。 有什么办法可以恢复数据库?

非常感谢您的帮助。

这可能是值得安装,如果需要在另一个盒子,MySQL 5.0.77,恢复,然后重新倾倒与适当的选项。

这不是一个优雅的解决scheme,但是如果你遇到了“大麻烦”,而且需要快速有效的工作,这是我首先想到的。

希望你的转储文件不是太大。 复制并编辑它。 如果真的很大,请使用sed或脚本。 如果它足够小,vim它。

sed '/\/*!40101 SET character_set_client'/d < original > copy

任何你看到的string/*!40101 SET character_set_client删除那一行。 服务器无论如何不理解它,它不会影响你的数据。

 /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `location` ( `locationId` int(11) NOT NULL DEFAULT '0', `releaseDate` date NOT NULL DEFAULT '0000-00-00', `id` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`releaseDate`,`locationId`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */;