2013-06-03 49 views
7

我正在使用phpMyAdmin 4.0.2,並且似乎在整個數據庫上執行導出時,默認情況下會在導出SQL的開頭添加語句「CREATE DATABASE IF NOT EXISTS」。如何從phpMyAdmin 4中導出刪除「CREATE DATABASE IF NOT EXISTS」語句?

我無法找到一個配置選項或任何選項來禁用...所以有沒有辦法來禁用,並沒有默認情況下我的出口中的那條語句?

+1

它有傷害嗎?你爲什麼需要它消失? –

+3

這僅僅是因爲對於大型數據庫,我想從我的開發本地數據庫中導出一個文件並導入服務器數據庫。當本地數據庫名稱與服務器上的數據庫名稱不同時,我將該文件導入到服務器上,它會在嘗試創建同一個數據庫時產生錯誤,但使用不同的名稱......如果這樣做有道理。 – Vlad

+0

只需查看phpMyAdmin更新日誌(http://www.phpmyadmin.net/documentation/changelog.php),看起來此行爲是2013年5月24日版本4.0.2.0中引入的。謝天謝地(因爲這也引起了我使用與分段和實時數據庫名稱不同的本地數據庫名稱時不必要的麻煩),看起來它們在2013年8月4日的版本4.0.5.0中再次進行了更改,並將其作爲選項(默認爲false)。 – Stephen

回答

2

這種行爲在版本3中默認沒有發生。一個快速修復,實際上是一種破解,因此不是理想的解決方案,是編輯位於庫/ plugins/export/ExportSql.class.php中的導出類文件和強制創建和使用語句加入註釋掉「 - 」他們之前,因爲這樣的: 線709

$create_query = '-- CREATE DATABASE IF NOT EXISTS ' 

線734

'-- USE ' . PMA_Util::backquoteCompat($db, $compat) 

編輯:有一個缺點,那就是如果您導出一個或多個入口數據庫(不僅僅是裏面的一些或全部表數據庫),那麼CREATE和USE語句也會出現註釋。

+0

這似乎是個伎倆。謝謝! – Vlad

+3

好吧,如果在共享主機上使用phpmyadmin不是真正的解決方案,現在是它 –

0

與Hermes的回答相反,更好的主意是編輯文件./export.php(注意:不是db_export.php)。

線724(在phpMyAdmin 4.0.4),你會發現行:

if (! $export_plugin->exportDBCreate($db)) { 
     break; 
    } 

您可以發表評論或刪除它們跳過創建數據庫語句創建(這在我看來也是整潔,然後在出口2註釋行)。

像這樣:

/* 
    if (! $export_plugin->exportDBCreate($db)) { 
     break; 
    } 
    */ 

只以上的行適用於出口的單一數據庫(在線720,你會發現:} elseif ($export_type == 'database') {)。所以你不會破壞整個服務器的輸出。