2012-09-19 36 views
1

我正在使用php腳本來遠程備份我的sql數據庫,它使用mysqldump。 http://www.dagondesign.com/files/backup_dbs.txt遠程使用MySqlDump時MySql表鎖定?

我嘗試添加--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?或者它不應該在那裏,因爲有很多人在服務器上工作,並且有人可能創建了它?

回答

1

在Windows 7上使用WAMP,則該選項--skip-lock-tables

this answer

接過
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然後添加自己想要的任何標誌。