无法连接到Kohana的远程MySql服务器
问题描述:
我试着Kohana为php应用程序,并且当连接到MySql的本地主机安装时,我有一个简单的数据库测试工作。但是,当我尝试更改连接到Web主机(Surftown)上的远程MySql数据库时,它不起作用。无法连接到Kohana的远程MySql服务器
这里是连接数据从database.php中(“默认”连接):
'hostname' => 'mydb23.surftown.se',
'database' => 'andclic_app',
'username' => 'myusername',
'password' => 'mypassword',
'persistent' => FALSE,
然后我尝试这在我的控制器:
$default = Database::instance('default');
$result = $default->query(Database::SELECT, 'SELECT * FROM products', TRUE);
,但我得到一个错误说没有连接:
62 catch (Exception $e)
63 {
64 // No connection exists
65 $this->_connection = NULL;
66
67 throw new Database_Exception(':error',
68 array(':error' => $e->getMessage()),
69 $e->getCode());
70 }
71
72 // \xFF is a better delimiter, but the PHP driver uses underscore
那么我在做什么错了?我也尝试使用ip号码而不是主机名称,我尝试追加端口(:3306),但都没有帮助。
答
确保你能够连接到远程MySQL服务器而不需要Kohana。很少有其他提示:
Database::instance('default');
您不必指定default
,这是default
默认。
$default->query(Database::SELECT, 'SELECT * FROM products', TRUE);
请确保您拨打->execute()
方法来运行查询。
答
当您激活php以显示不建议使用的错误时,会发生此问题。 mysql驱动程序基于已被弃用的mysql_connect库。当你的php在这个库上抛出不推荐的错误时,Kohana类不能处理这个错误。 为了避免这种错误,你需要在添加以下代码行: 模块 - >数据库 - >类 - > kohana->数据库 - > mysql.php
查找下面一行代码:
// Prevent this information from showing up in traces
unset($this->_config['connection']['username'], $this->_config['connection']['password']);
以下行添加到该文件的前行之后:
//Added to suppress deprecated error due to deprecated driver
error_reporting(E_ALL^E_DEPRECATED);
加入这一行后,废弃的错误代码将被抑制,您将能够使用的mysql_connect扩展。
这是一个临时的解决方法,因为最终你需要将代码迁移到新的支持扩展mysqlite
发生primariy与PHP的latests版本此问题。您不会在旧版本的php中遇到此行为。
希望这可以帮助我花了一段时间来弄清楚这一点。
数据库是否接受本地主机以外的连接? – CodeCaster
好问题,我还没有开始上传到服务器,但我现在做了,它从服务器上正常工作。但是,我已经在Web主机上添加了我的IP作为例外,以允许从本地主机进行访问。当我连接到NaviCat或Visual Studio时,这就很有效。但是,当通过本地主机运行时,不能从php应用程序中... – Anders
@但是只有低调的问题:为什么downvote?如果你觉得它有什么问题,你至少应该评论一下为什么,我怎么能知道你认为是错误的? – Anders