我试图在两个不同的
MySQL服务器之间使用
PHP和MySQL的Create Table Select.我不确定这可以用SQL做到这一点.我没有错,但我也没有做任何事:
$dbname = 'cms';
$dbmaster = 'cmsms';
$db1 = mysql_connect('localhost', 'root', 'secret');
if (!$db1) {
echo 'Could not connect to mysql';
exit;
}
$db2 = mysql_connect('server2', 'root', 'secret');
if (!$db2) {
echo 'Could not connect to mysql';
exit;
}
mysql_select_db("$dbname", $db1) or die ("Unable to select database");
mysql_select_db("$dbmaster", $db2) or die ("Unable to select database");
$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql, $db1);
if (!$result) {
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
while ($row = mysql_fetch_row($result)) {
$sql = "DROP TABLE `$row[0]`";
mysql_query($sql, $db1);
echo "Table rows: {$row[0]} Deleted
";
$sql = "CREATE TABLE $row[0] SELECT * FROM $db2.$dbmaster.$row[0] ";
mysql_query($sql, $db1);
echo "Table: {$row[0]} created
";
}
echo "
done...";
mysql_free_result($result);
?>
那条线:
$sql = "CREATE TABLE $row[0] SELECT * FROM $db2.$dbmaster.$row[0] ";
只是不起作用. $db2不会让它转到其他服务器并选择.
从做了一些关于SO的阅读我发现有人类似,有人说它无法完成并查看联合表,这对我不起作用.
如果上面不能做到这一点有没有人知道我正在做的事情的方法?我正在删除副本上的表并根据主服务器中的表重新创建它们.然后我选择master中的数据放入重新创建的表中.谢谢
更新:
这样我就可以清楚了.如果所有内容都在同一台服务器上并且我只有一个数据库连接,则代码可以工作.我相信是因为创建表选择我有问题.此SQL需要同时使用两个服务器. create table用于一个刚刚删除它的表的数据库,但select是从第二个连接的数据库中选择的 – 同一个SQL语句中的两个连接.