我正在使用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?或者它应该不存在,因为有很多人在服务器上工作而有人可能已经创建了它?
答案 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