Ben PHP kullanmaya çalışıyorum ve MySQL iki farklı MySQL sunucuları arasında Tablo oluştur seçeneğini seçin. Ben bu SQL ile böyle yapılabilir emin değilim. Hiçbir hata olsun ama ben de bitmiş bir şey olsun:
<?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);
?>
Bu çizgi:
$sql = "CREATE TABLE $row[0] SELECT * FROM $db2.$dbmaster.$row[0] ";
sadece çalışmıyor. $ db2 bu diğer sunucuya gidin ve yapmaz.
Bazı okuma yaparken SO Birisi benzer bulundu ve birisi yapılamaz ve benim için çalışmak değil, hangi federasyon masalarda bakmak dedi.
Bu yukarıda yapılamaz eğer herkes ben ne yapıyorum yapmak için bir yol biliyor mu? Ben kopya tablolar bırakarak ve master tabloya dayalı bunları yeniden oluşturma. Sonra yeniden oluşturulan tabloları koymak için master verileri seçiyorum. Teşekkür ederim
Update: Just so I can be clear. The code works if everything were on the same server and I only had one database connection. It is because of the create table select that I have problems, I believe. This SQL needs to use two servers at the same time. The create table is for one database that just dropped it's tables but the select is selecting from the database of the second connection - two connections in the same SQL statement.