我希望Codeigntier連接到另一臺服務器(不是本地主機)上的MySQL數據庫。我如何在config/database.php文件中配置它?無法使用Codeigntier連接到外部數據庫
我將主機名設置爲具有正確用戶名/密碼的IP地址,但它不起作用。
我得到的錯誤說:使用所提供的設置無法連接到數據庫服務器:
數據庫發生錯誤。
我希望Codeigntier連接到另一臺服務器(不是本地主機)上的MySQL數據庫。我如何在config/database.php文件中配置它?無法使用Codeigntier連接到外部數據庫
我將主機名設置爲具有正確用戶名/密碼的IP地址,但它不起作用。
我得到的錯誤說:使用所提供的設置無法連接到數據庫服務器:
數據庫發生錯誤。
Triq,
您可以像另一組數據庫的配置添加到您的config/database.php
文件(在你的default
集的頂部)以下的(你可以改變dbwrite
到其他你喜歡的名字):
$dbw = $this->load->database('dbwrite',TRUE);
$dbw->query(xxx); // this will execute the query on the other db
:
$db['dbwrite']['hostname'] = "[other db host]";
$db['dbwrite']['username'] = "[other db username]";
$db['dbwrite']['password'] = "[other db password]";
$db['dbwrite']['database'] = "[other db name]";
$db['dbwrite']['dbdriver'] = "mysql";
$db['dbwrite']['dbprefix'] = "";
$db['dbwrite']['pconnect'] = FALSE;
$db['dbwrite']['db_debug'] = FALSE;
$db['dbwrite']['cache_on'] = FALSE;
$db['dbwrite']['cachedir'] = "";
$db['dbwrite']['char_set'] = "utf8";
$db['dbwrite']['dbcollat'] = "utf8_general_ci";
然後,您可以使用下面的代碼完成這dB參考
確保dbwrite
與您在其他數據庫配置中使用的名稱相同。 $this
是指$CI
實例。
Heru,好像你只是想將當前的數據庫配置從本地主機改爲你的活動服務器。執行此操作,在application/config
文件夾中打開database.php
文件。然後找到這些線。
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = ''; // might be empty or might be full
$db['default']['database'] = 'your_database';
並將其更改爲此。 。 。
$db['default']['hostname'] = 'your_host_name';
$db['default']['username'] = 'your_user_name';
$db['default']['password'] = 'your_password';
$db['default']['database'] = 'your_new_database';
取決於您是否在共享主機上或其他因素。您的主機可能會爲您提供新的主機名,可能需要密碼並可能爲您提供預配置的數據庫名稱。查看主機提供商的這些信息。
如果不起作用。 。 。
您也可以嘗試將其更改爲可以找到您的服務器IP並將其轉換爲指定地址的數據庫,但您的數據庫可能位於或不位於不同的地址。但值得一試。
$hostIP = $_SERVER['SERVER_ADDR'];
(string)$hostname = gethostbyaddr($hostIP);
$db['default']['hostname'] = $hostname;
$db['default']['username'] = 'your_user_name';
$db['default']['password'] = 'your_password';
$db['default']['database'] = 'your_new_database';
此外,如果你自信你的數據庫的IP,改變上述
(string)$hostname = gethostbyaddr($hostIP)
到
(string)$hostname = gethostbyaddr('10.11.12.123'); // with your IP #
這在我看來是一個數據庫權限的問題,而不是一個CI問題。您可能無權從您的IP連接。當你一些隨機的PHP頁面上運行此會發生什麼:
mysql_connect($server, $un, $pw) or die(mysql_error());
爲了解決這個問題,只需運行:
GRANT SELECT, DELETE, UPATE, INSERT ON $dbname.% TO [email protected]% IDENTIFIED BY ('$pw')
You can easily Crated multiple database connection using codeigniter
$db['default']['hostname'] = "localhost:3306";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "buy599_erp";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRU`enter code here`E;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
$db['magento6']['hostname'] = "localhost:3306";
$db['magento6']['username'] = "root";
$db['magento6']['password'] = "";
$db['magento6']['database'] = "magento6";
$db['magento6']['dbdriver'] = "mysql";
$db['magento6']['dbprefix'] = "";
$db['magento6']['pconnect'] = TRUE;
$db['magento6']['db_debug'] = TRUE;
$db['magento6']['cache_on'] = FALSE;
$db['magento6']['cachedir'] = "";
$db['magento6']['char_set'] = "utf8";
$db['magento6']['dbcollat'] = "utf8_general_ci";
$db['magento6stalkbuylove']['hostname'] = "localhost:3306";
$db['magento6stalkbuylove']['username'] = "root";
$db['magento6stalkbuylove']['password'] = "";
$db['magento6stalkbuylove']['database'] = "magento6stalkbuylove";
$db['magento6stalkbuylove']['dbdriver'] = "mysql";
$db['magento6stalkbuylove']['dbprefix'] = "";
$db['magento6stalkbuylove']['pconnect'] = TRUE;
$db['magento6stalkbuylove']['db_debug'] = TRUE;
$db['magento6stalkbuylove']['cache_on'] = FALSE;
$db['magento6stalkbuylove']['cachedir'] = "";
$db['magento6stalkbuylove']['char_set'] = "utf8";
$db['magento6stalkbuylove']['dbcollat'] = "utf8_general_ci";
你能在命令行連接到遠程MySQL服務器上的本地服務器? (即通過mysql命令?)可能需要爲該特定主機授予priv。 –
您的遠程數據庫服務器是否允許外部連接?也許你需要檢查你的防火牆設置或你的數據庫用戶設置 – liamgriffiths
就像Alex和Liam告訴你的,這可能是外部連接權限的問題。如果你使用cPanel,你可以在「Remote MySQL」上添加一個通配符「%」。如果這不起作用,請聯繫您的技術支持。 – juanrossi