PHP ezSQL和两个连接到不同的主机

时间:2013-02-18 15:48:14

标签: php ezsql

我正在尝试在不同数据库之间复制一些数据。为了测试,我在localhost上只使用了两个数据库,一切正常,但是一旦我尝试建立与两个不同主机的连接,它就不再起作用了。 我的代码如下所示:

$sourceDb = new ezSQL_mysql($settings['dbuser'], $settings['dbpass'], $settings['dbname'], $settings['dbhost']);

$targetDb = new ezSQL_mysql($settings['syncdbuser'], $settings['syncdbpass'], $settings['syncdbname'], $settings['syncdbhost']);

错误信息是:

Warning: Error establishing mySQL database connection.
Correct user/password? Correct hostname?
Database server running? in ez_sql_mysql.php on line 89
PHP Warning:  mySQL database connection is not active
 in ez_sql_mysql.php on line 121

是否有任何我不知道的问题,这会阻止两个连接到不同的主机?

顺便说一下。连接信息100%正确..如果我只使用一个连接一切正常,没有任何问题!

2 个答案:

答案 0 :(得分:0)

我仍然不知道为什么会出现这个错误。切换到PDO并没有问题..

答案 1 :(得分:0)

此解决方案适用于3.08版本。

问题是由连接功能引起的。函数从constract获取数据库名称。如果是第一次确定变量,则第二次或更多次将不起作用。

拳头;请打开/ lib文件夹

  • 根据您的数据库选择文件(例如ez_sql_mysqli.php)

  • 查找函数connect(....

  • 更改它 公共功能connect($ dbuser ='',$ dbpassword ='',$ dbhost ='localhost',$ charset ='') 至 公共功能connect($ dbuser ='',$ dbpassword ='',$ dbhost ='localhost',$ charset ='', $ dbname =''

  • 在函数(连接)中找到$ this-> _ dbname。将其更改为$ dbname。 (您可以在$ dbname之前加上“ if($ dbname ==“”){$ dbname = $ this-> _ dbname;}“)

  • 在类内部找到quick_connect; 更改$ this-> connect($ dbuser,$ dbpassword,$ dbhost,true) 到$ this-> connect($ dbuser,$ dbpassword,$ dbhost,true, $ dname

  • 它将起作用。