远程使用MySqlDump时MySql表锁定?

时间:2012-09-19 21:44:40

标签: php mysql mysqldump

我正在使用php脚本远程备份我的sql数据库,利用mysqldump。 http://www.dagondesign.com/files/backup_dbs.txt

我尝试添加--lock-tables = false,因为我使用的是MyISAM表但仍然出错。

exec( "$MYSQL_PATH/mysqldump --lock-tables=false $db_auth --opt $db 2>&1 >$BACKUP_TEMP/$db.sql", $output, $res);

错误:

mysqldump: Couldn't execute 'show fields from `advisory_info`': Can't create/write to file 'E:\tmp\#sql_59c_0.MYD' (Errcode: 17) (1)

有人告诉我这个文件是自己的锁文件,我能够在我的服务器中找到它,我想要备份。

这是锁文件吗?如果你做远程操作它会锁定数据库,无论我把变量--lock-tables = false?或者它应该不存在,因为有很多人在服务器上工作而有人可能已经创建了它?

2 个答案:

答案 0 :(得分:2)

--lock-tables=false可能没有按照您的想法行事。由于您正在传递--lock-tables,因此可能假设您执行想要锁定表(即使这是默认值),因此它会锁定它们。在Linux中,我们不会阻止标记,而是附加=false=0之类的内容,但通常是--skip-X--no-X

您可能想尝试--skip-opt

  --skip-opt          Disable --opt. Disables --add-drop-table, --add-locks,
                      --lock-tables, --set-charset, and --disable-keys.

由于默认情况下启用了--opt,您可以--skip-opt然后添加所需的任何标记。

答案 1 :(得分:1)

在Windows 7上使用Wamp,选项为--skip-lock-tables

this answer

开始