无法连接到Kohana的远程MySql服务器

无法连接到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),但都没有帮助。

+0

数据库是否接受本地主机以外的连接? – CodeCaster

+0

好问题,我还没有开始上传到服务器,但我现在做了,它从服务器上正常工作。但是,我已经在Web主机上添加了我的IP作为例外,以允许从本地主机进行访问。当我连接到NaviCat或Visual Studio时,这就很有效。但是,当通过本地主机运行时,不能从php应用程序中... – Anders

+0

@但是只有低调的问题:为什么downvote?如果你觉得它有什么问题,你至少应该评论一下为什么,我怎么能知道你认为是错误的? – Anders

确保你能够连接到远程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中遇到此行为。

希望这可以帮助我花了一段时间来弄清楚这一点。