我有一个应用程序,其中每个用户都有自己的数据库并共享相同的模式。 (我有另一个线程讨论这个,所以我不需要这方面的消息)多数据库模式迁移(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