我想在兩個不同的MySQL服務器之間使用PHP和MySQL的Create Table Select。我不確定這可以用SQL來完成。我沒有得到任何錯誤,但我一事無成之一:我可以在兩臺使用PHP的服務器上使用MySql Create Select嗎?
<?php
$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 <br/>";
$sql = "CREATE TABLE $row[0] SELECT * FROM $db2.$dbmaster.$row[0] ";
mysql_query($sql, $db1);
echo "Table: {$row[0]} created <br/>";
}
echo "<br/>done...";
mysql_free_result($result);
?>
這條線:
$sql = "CREATE TABLE $row[0] SELECT * FROM $db2.$dbmaster.$row[0] ";
是行不通的。 $ db2不會將其轉到其他服務器並進行選擇。
從做一些閱讀我發現有人相似,有人說它不能做,並看看聯合表,這將不適合我。
如果這不能做到上面沒有人知道一種方法來做我在做什麼?我將刪除表上的副本,並根據主表中的表重新創建它們。然後我選擇主數據放入重新創建的表格。謝謝
更新: 就這樣,我可以清楚。如果所有內容都在同一臺服務器上,並且我只有一個數據庫連接,則該代碼可以工作這是因爲創建表選擇,我有問題,我相信。此SQL需要同時使用兩臺服務器。 create table用於一個數據庫,只刪除它的表,但select從第二個連接的數據庫中選擇 - 在同一個SQL語句中有兩個連接。
@phill我會,如果我得到的答案是正確的。我試着回頭看看它們,但很多時候它們只是錯誤的,或者我沒有測試過它們。 – johnny 2010-10-22 14:39:34
只需快速瀏覽一些您認爲已經回答的老問題,並提供多種解決方案。注意我只看了PHP的問題,但對於大多數問題和解決方案,還有更多的答案。 – 2010-10-22 15:03:49
@這不是我的經驗,但我很樂意檢查他們,如果他們給出正確的答案。我不想保留任何人的觀點並欣賞所有答案。 – johnny 2010-10-25 15:24:07