簡體   English   中英

PHP ezSQL和兩個到不同主機的連接

[英]PHP ezSQL and two connections to different hosts

我正在嘗試在不同的數據庫之間復制一些數據。 為了進行測試,我僅在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%正確的..如果我僅使用一個連接,則一切正常,沒有任何問題!

我仍然不知道為什么會出現此錯誤。 切換到PDO,沒有問題。

此解決方案適用於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

  • 它會工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM