我正在使用php代码备份我的mysql数据库。我使用了以下代码
$username =escapeshellcmd($db_user);
$password =escapeshellcmd($db_pass);
$hostname =escapeshellcmd($db_host);
$database =escapeshellcmd($db_name);
$backupFile='/dbBackup/'.date("Y-m-d-H-i-s").'.sql.gz';
$command = "mysqldump -u$username -p$password -h$hostname $database | gzip > $backupFile";
system($command, $result);
我将此代码放在php文件中并调用此文件以在dbBackup文件夹中生成备份。我在一台服务器上有两台服务器,这段代码完美无缺,但在第二台服务器上,这段代码生成.sql zip文件,其中只包含部分sql,如下所示
-- MySQL dump 10.13 Distrib 5.5.23, for Linux (x86_64)
--
-- Host: localhost Database: zm3_quizzes
-- ------------------------------------------------------
-- Server version 5.5.23-55
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
为什么会这样?
提前致谢。
答案 0 :(得分:0)
你检查过两台服务器上的MySQL版本吗?有一个记录here的错误可能是相关的...你的版本应该修复它,但请确保你检查两个服务器是否有相同的版本,以防万一。
答案 1 :(得分:0)
我最近遇到了同样的问题。事实证明,失败的数据库的用户没有"锁定表"特权。我更改了用户的权限(在我的情况下,使用cPanel),我的脚本工作。