1

我正在使用 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,它是否会锁定数据库?或者它不应该在那里,因为有很多人在服务器上工作并且可能有人创建了它?

4

2 回答 2

2

它可能--lock-tables=false没有做你认为它正在做的事情。由于您正在通过--lock-tables,因此可能假设您确实想要锁定表(即使这是默认设置),所以它正在锁定它们。在 Linux 中,我们不会阻止标志,而是附加类似的东西=falseor =0,但通常通过使用--skip-Xor --no-X

您可能想尝试--skip-opt

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

因为--opt默认启用,所以您可以--skip-opt添加回您想要的任何标志。

于 2012-09-19T22:02:11.350 回答
1

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

取自这个答案

于 2012-09-19T22:07:42.130 回答