我希望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