我遇到了一个大麻烦。我使用 5.0.77 版本制作了 mysql 转储,但没有设置兼容模式(我不知道这个问题)。实际的 mysql 服务器是 4.0.18 版本。今天我们的数据库崩溃了。很多表都丢失了。在尝试恢复转储时,它返回错误“第 18 行错误 1193:未知系统变量‘character_set_client’”。我们有什么办法可以恢复数据库吗?
非常感谢您的帮助。
答案1
如果需要的话,在另一个机器上安装 mysql 5.0.77、恢复,然后使用适当的选项重新转储可能是值得的。
这不是一个优雅的解决方案,但如果你遇到了“大麻烦”并且需要一些有效且快速的解决方法,那么这是我首先想到的方法。
答案2
希望你的转储文件不太大。复制并编辑它。如果它真的很大,使用sed
或脚本。如果它足够小,用 vim 编辑它。
sed '/\/*!40101 SET character_set_client'/d < original > copy
看到该字符串的地方/*!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 */;