首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法连接到Kohana中的远程MySql服务器

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

Stack Overflow用户
提问于 2011-09-06 17:56:26
回答 2查看 1.4K关注 0票数 0

我正在试用一个php应用程序的Kohana,当我连接到我的本地主机安装的MySql时,我有一个简单的数据库测试。但是,当我尝试更改到web主机(冲浪城)上的远程MySql数据库的连接时,它不起作用。

下面是来自database.php的连接数据(默认连接):

代码语言:javascript
复制
        'hostname'   => 'mydb23.surftown.se',
        'database'   => 'andclic_app',
        'username'   => 'myusername',
        'password'   => 'mypassword',
        'persistent' => FALSE,

然后我在我的控制器中尝试这样做:

代码语言:javascript
复制
$default = Database::instance('default');
$result = $default->query(Database::SELECT, 'SELECT * FROM products', TRUE);

但是我得到了一个错误,说没有连接存在:

代码语言:javascript
复制
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),但都没有效果。

EN

回答 2

Stack Overflow用户

发布于 2014-07-22 14:08:38

当您激活php以显示不推荐使用的错误时,就会出现此问题。mysql驱动程序基于mysql_connect库,该库已被弃用。当你的php在这个库上抛出弃用的错误时,Kohana类不能处理这个错误。要避免此错误,您需要在中添加以下代码行: modules->database->classes->kohana->database->mysql.php

查找以下代码行:

代码语言:javascript
复制
    // Prevent this information from showing up in traces
    unset($this->_config['connection']['username'], $this->_config['connection']['password']);

将以下行添加到文件中的前一行之后:

代码语言:javascript
复制
    //Added to suppress deprecated error due to deprecated driver
    error_reporting(E_ALL ^ E_DEPRECATED);

添加此行后,不推荐使用的错误代码将被取消,您将能够使用mysql_connect扩展。

这是一种临时解决方法,因为最终您需要将代码迁移到新的受支持扩展mysqlite

这个问题主要发生在php的最新版本中。在旧版本的php中,你不会遇到这种情况。

希望这能帮到我花了一段时间才弄明白这个问题。

票数 2
EN

Stack Overflow用户

发布于 2011-09-08 05:52:52

确保您能够在没有Kohana的情况下连接到远程MySQL服务器。其他一些小贴士:

代码语言:javascript
复制
Database::instance('default');

您不必指定default,默认情况下它是default

代码语言:javascript
复制
$default->query(Database::SELECT, 'SELECT * FROM products', TRUE);

确保调用->execute()方法来运行查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7318072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档