从备份恢复后 MySQL 数据消失

从备份恢复后 MySQL 数据消失

我最近不得不从一个托管服务提供商转移到另一个(如果您在英国,请不要使用 Easyspace 作为您的 VPS!)因为我的之前的主机在没有任何警告的情况下丢弃了我的服务器。

幸运的是,我已做好远程备份,能够顺利恢复几乎所有客户网站和数据库。除了这个。

自从我恢复了数据库后,其中一些数据库表现出非常不寻常的行为,特别是将多行数据行或某些字段清零。

有人遇到过这种情况吗/知道原因是什么吗?这种情况似乎仅在更新记录时发生。

我的备份包括

mysqldump --all-databases

我最初使用 phpMyAdmin 恢复到我的新 MySQL 服务器。然后我再次尝试,从命令行直接导入 MySQL,结果还是一样。

答案1

您要导入的数据库是否使用与数据库导出/源数据库不同的默认字符集创建? iso-8859-1 和 UTF-8 之间的差异通常会导致报告时数据丢失。

答案2

事实证明,问题在于我使用了 mysql_real_escape 字符串。我的脚本抛出了以下错误:

Warning: [2] mysql_real_escape_string(): "Access denied for user 'www-data'@'localhost' (using password: NO)"

我正在使用 mysqli。因此函数/方法应该是

mysqli_real_escape_string($link, $str);
// OR
mysqli::escape_string($str);

看起来真的很蠢,但它在我的另一台服务器上运行正常,尽管根本没有使用 mysql 的默认设置……它似乎可以继续运行。所以我猜是权限问题,而我的新服务器表现出了正确的行为。

问题解决了。

相关内容