我正在试用一个php应用程序的Kohana,当我连接到我的本地主机安装的MySql时,我有一个简单的数据库测试。但是,当我尝试更改到web主机(冲浪城)上的远程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),但都没有效果。
发布于 2014-07-22 14:08:38
当您激活php以显示不推荐使用的错误时,就会出现此问题。mysql驱动程序基于mysql_connect库,该库已被弃用。当你的php在这个库上抛出弃用的错误时,Kohana类不能处理这个错误。要避免此错误,您需要在中添加以下代码行: modules->database->classes->kohana->database->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
这个问题主要发生在php的最新版本中。在旧版本的php中,你不会遇到这种情况。
希望这能帮到我花了一段时间才弄明白这个问题。
发布于 2011-09-08 05:52:52
确保您能够在没有Kohana的情况下连接到远程MySQL服务器。其他一些小贴士:
Database::instance('default');您不必指定default,默认情况下它是default。
$default->query(Database::SELECT, 'SELECT * FROM products', TRUE);确保调用->execute()方法来运行查询。
https://stackoverflow.com/questions/7318072
复制相似问题