我正在实施数据库表复制系统。我知道后一种MySQL技术,但我无法让它工作。我现在所拥有的基本上是初步实施。
这是我到目前为止的代码。
//This is where DBHandler is defined
$documentRoot=$_SERVER['DOCUMENT_ROOT'];
require_once($documentRoot."/Classes/DBHandler.php");
$src_controller = new DBHandler();
$query = "SELECT * FROM table";
$temp = $src_controller->select($query);
//Convert temporary database contents into usable result
while($rowObject=mysql_fetch_object($temp)){
$result[]=$rowObject;
}
//Create database handler to handle database
$dest_controller = new mysqli("ip address", "user", "password", "database name");
if($mysqli->connect_errno){
$errorMessage = sprintf("'%s'", $mysqli->connect_error);
echo $errorMessage;
}
else{
$dest_controller->query("DELETE * FROM table");
//Processing of data goes here
foreach($result as $item){
//Create query to insert individual records
$start = "INSERT INTO table(field1, field2...) VALUES (";
$end = sprintf("'%s', %d, %d, %f, %f)", field1, field2...);
$start .= $end;
//Database handler uses $start to insert record
$dest_controller->query($start);
}
$dest_controller->close();
}
正在读取的数据库与正在写入的数据库位于不同的服务器上。我尝试使用命令“SHOW VARIABLES WHERE Variable_name ='hostname'”检查目标数据库的主机,并找到一个只显示“抱歉,错误的页面或我们已移动”页面的网站。更重要的是,我在URL中看到的端口号与“SHOW VARIABLES WHERE Variable_name ='port'”命令给出的内容不匹配。后一个命令说3306。
我不确定该怎么做。我们使用cPanel X连接到数据库,并且有一个选项允许选择IP远程访问此数据库。我很肯定我允许访问正确的地址,但这没有成就。
这是主机的某种问题,还是我在创建mysqli对象时没有使用正确的IP地址进行连接?
答案 0 :(得分:0)
如果MySQL端口在该服务器上打开?检查一下:
telnet yoursever.address.com 3306
如果telnet无法连接,则端口被阻止,您需要托管服务提供商才能将其打开。