调用未定义的方法MDB2_Error :: setFetchMode()

时间:2014-08-14 09:21:43

标签: php mysql pear mdb2

我正在使用PEAR的MDB2连接到我的MySQL数据库。

我之前从未遇到过任何问题,但这个特殊的主机给我带来了麻烦。

起初我认为这是用户凭据,但我已使用标准MySQL代码在同一文件上进行了测试,以便成功连接。

 //Error Code
 Fatal error: Call to undefined method MDB2_Error::setFetchMode() in /home/topazmar/public_html/db/db.php on line 15

 //Php Code
 $this->conn=MDB2::connect(array(
        'phptype'  => 'mysql',
        'username' => DATABASE_USR,
        'password' => DATABASE_PWD,
        'hostspec' => DATABASE_HOST,
        'database' => DATABASE_NAME,
    ));
    $this->conn->setFetchMode(MDB2_FETCHMODE_ASSOC); //Line 15

修改

我用转储输出$ this-> conn

[0] => Array
            (
                [file] => /home/topazmar/public_html/db/MDB2.php
                [line] => 979
                [function] => PEAR_Error
                [class] => PEAR_Error
                [type] => ->
                [args] => Array
                    (
                        [0] => MDB2 Error: not found
                        [1] => -4
                        [2] => 1
                        [3] => 1024
                        [4] => unable to find package 'MDB2_Driver_mysql' file 'MDB2/Driver/mysql.php'
                    )

            )

我确实已经安装了MDB2_Driver_mysql 1.4.1以及PEAR和MDB2 ...让我感到困惑,我不认为使用modrewrites会改变这一点。

3 个答案:

答案 0 :(得分:2)

您的连接失败并且您返回错误对象(类MDB2_Error)而不是连接对象(扩展MDB2_Driver_Common的类)。

使用PEAR::isError($this->conn)检查连接是否成功。

[编辑 - 胡伯]

这意味着你没有连接到数据库,pw问题,用户没有私有化等

答案 1 :(得分:0)

对我来说,修复它就像从梨安装MDB2库一样简单。

假设您已经安装了PEAR:

pear install MDB2 
pear install MDB2#mysql

从终端/ cmd窗口,我很高兴。

答案 2 :(得分:0)

如果有人看到这个线程并且他们确实正确安装了MDB2和db驱动程序:我遇到了同样的问题,结果发现我没有为db用户设置足够的权限。 Durrr