2013-08-27 31 views
3

這個問題可能看起來是重複的,但我試過所有的例子來恢復我的數據庫,但似乎沒有任何工作。 我想運行一個腳本,將我的備份sql文件恢復到新的數據庫。我試過這些行來恢復我的數據庫,但似乎沒有工作。PHP腳本將數據庫恢復到另一個空數據庫

 $mysql_host = 'localhost'; 
    $mysql_username = 'my_username'; 
    $mysql_password = 'somepassword'; 
    $db_name = 'test_db'; 


    $source = 'C:/wamp/www/my_folder/test_db.sql'; 

    $conn = mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error()); 

    mysql_query("CREATE DATABASE $db_name", $conn) or die('Error connecting to MySQL server: ' . mysql_error()); 

    restore_my_database($mysql_host, $mysql_username, $mysql_password, $db_name, $source); 

    function restore_my_database($mysql_host, $mysql_username, $mysql_password, $db_name, $source) { 

     exec("mysql --opt -h $mysql_host -u $mysql_username -p $mysql_password $db_name < $source"); 
    } 

我也試過在功能restore_my_database以下行

$command = "mysqldump --opt -h $mysql_host -u $mysql_username -p $mysql_password $db_name > $source"; 
system($command); 

高達數據庫中創建,代碼工作正常,但恢復是行不通的。 任何人都可以幫我用PHP恢復代碼來恢復我的數據庫。在此先感謝

+0

這是新代碼嗎?如果是這樣,你可能要考慮避免使用'mysql_ *'函數(它們已被棄用)。相反,請考慮使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli) - [本文](http://j.mp/QEx8IB)將幫你決定哪個。 –

+0

「mysql」和「mysqldump」命令不在用戶執行腳本的路徑中。使用這些命令的完整路徑並重試。 –

+0

我實際上只使用了完整路徑,就像exec(「C:/wamp/bin/mysql/mysql5.5.8/bin/mysql --opt -h $ mysql_host -u $ mysql_username -p $ mysql_password $ db_name <$資源」); – Inventillect

回答

0

- 你必須創建一個模式:

mysql 
mysql> create database [your schema name]; 
mysql> grant all privileges on [your schema name].* to [your username]@localhost identified by '[your password]'; 

- 在您的計算機上的SQL轉儲:

mysqldump [your schema name] > [your schema name].sql 

- 並將其導入到新的DB:

mysql [your schema name] < [your schema name].sql; 
2

您可以通過以下代碼實現它,首先從.sql文件中獲取內容,然後執行查詢

$source = 'C:/wamp/www/my_folder/test_db.sql'; 

$conn = mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error()); 

mysql_query("CREATE DATABASE $db_name", $conn) or die('Error connecting to MySQL server: ' . mysql_error()); 
mysql_select_db($db_name); 
$qry = file_get_contents($source); 
mysql_query($qry, $conn); 

,並增加最大執行時間,內存限制在php.ini文件

+0

感謝您的幫助。我想從源文件恢復到目標文件。上面的代碼會這樣做嗎?我還需要做什麼? – Inventillect

+0

這個腳本將更新數據庫,而不是文件,如果你想寫在文件中,你可以通過使用文件cancepts將文件內容寫入目標文件 – sudhakar

+0

我可以得到一個示例代碼,因爲我是新的PHP – Inventillect

0

因爲您是使用「phpMyAdmin的」標記這個問題,嘗試與phpMyAdmin創建數據庫,然後導入.sql文件。

0
//recupero il nome del file .sql 
$file = "C:/wamp/www/my_folder/test_db.sql"; 

//definisco il nome del database 
$db = 'name_db'; 

//effettuo la connessione al databse 
$conn = mysqli_connect($mysql_host, $mysql_username, $mysql_password) or die('Errore di connessione al server MySQL: ' . mysqli_error()); 

//seleziono il database 
mysqli_select_db($conn,$db); 

//leggo il contenuto del file .sql 
$qry = file_get_contents($file); 

//divido tutte le query presenti nel file .sql 
$query = explode(";",$qry); 

//conto quante query esistono 
$arrlenght = count($query); 

//ciclo tutte le query del file 
for($i=0;$i<$arrlenght;$i++){ 
    mysqli_query($conn, $query[$i]); 
} 
相關問題