我有一個應用程序,其中每個用戶都有自己的數據庫並共享相同的模式。 (我有另一個線程討論這個,所以我不需要這方面的消息)多數據庫模式遷移(php/mysql)
當遷移數據庫,我寫了如下圖所示的腳本:
<?php
$sql = <<<SQL
ALTER TABLE xyz....;
ALTER TABLE abc.....;
SQL;
$sql_queries = explode(";", $sql);
$exclude_dbs = array();
$conn = mysql_connect("localhost", "USER", "PASSWORD");
$show_db_query = mysql_query('SHOW databases');
$databases = array();
while ($row = mysql_fetch_assoc($show_db_query))
{
if (!in_array($row['Database'], $exclude_dbs))
{
$databases[] = $row['Database'];
}
}
foreach($databases as $database)
{
mysql_select_db($database, $conn);
echo "Running queries on $database\n***********************************\n";
foreach($sql_queries as $query)
{
if (!empty($query))
{
echo "$query;";
if (!mysql_query($query))
{
echo "\n\nERROR: ".mysql_error()."\n\n";
}
}
}
echo "\n\n";
}
?>
已經沒有任何問題做工精細。然後我使用stepancheg/mysql-diff來確保數據庫模式良好。
遷移數據庫時,我應該做什麼? (我之前也在臨時服務器上測試過)
您應該在執行遷移時使用事務並在一個查詢出錯時恢復數據庫的所有內容。 – Nico 2015-02-25 18:31:35