Fatal error: Uncaught exception 'Zend_Db_Adapter_Exception' with message 'SQLSTATE[28000] [1045] Access denied for user 'liveaide_dbuser1'@'lynx-u.znetindia.net' (using password: YES)' in /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Pdo/Abstract.php:144 Stack trace: #0 /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Pdo/Mysql.php(96): Zend_Db_Adapter_Pdo_Abstract->_connect() #1 /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Abstract.php(447): Zend_Db_Adapter_Pdo_Mysql->_connect() #2 /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Pdo/Abstract.php(235): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Select), Array) #3 /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Abstract.php(705): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Select), Array) #4 /home/liveaide/public_html/aider20test/zyberops/application/modules/default/models/Users.php(33): Zend_Db_Adapter_Abstract->fetchAll(Object(Zend_Db_Sel in /home/liveaide/public_html/aider20test/zyberops/library/Zend/Db/Adapter/Pdo/Abstract.php on line 144
config.ini 中的[一般] db.adapter = PDO_MYSQL db.config.host = xxxhost db.config.username = username db.config.password =密码 db.config.dbname = dbname
acl.roles.user = null acl.roles.admin = user
index.php 中的$config = new Zend_Config_Ini('./application/config.ini','general');
$registry = Zend_Registry::getInstance();
Zend_Registry::set('config',$config);
$db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('db',$db);
我们非常准确地提供了所有凭据,但是每当我们尝试访问数据库[loginAction]时,我们都会遇到上述错误。此外,包含数据库操作的操作会显示错误....在localhost中它可以正常工作....
答案 0 :(得分:4)
它绝对是一个身份验证问题:
各种谷歌搜索结果,SQLSTATE [28000] [1045],都指向身份验证错误。 你可以尝试做一下liveaide_dbuser1'@ localhost而不是liveaide_dbuser1'@'lynx-u.znetindia.net - 也许有一些问题..但只有数据库服务器在网络服务器上。
您确定您的身份验证凭据是否正确吗?
编辑: 好的,而不是:
$ db = Zend_Db的工厂::(组$ config-> DB->适配器, 组$ config-> DB-> config->指定者());
你能做到:
$db = Zend_Db::factory('pdo', array('user'=>'MyDbUser', 'pass' => 'MyPassword', etc);
所以我们可以确定传递的正确值是什么? (用我的例子代替实际正确的论点)。
答案 1 :(得分:0)
如果使用Zend_Db_Adapter_Pdo_Mysql
适配器,则应使用PDO进行测试。使用普通的ext / mysql API进行测试并不是在比较苹果和苹果。
<?php
$pdo = new PDO("mysql:host=lynx-u.znetindia.net;dbname=test",
"liveaide_dbuser1", "XXXX");
echo "Test successful"; // no exception thrown
?>
(当然,请填写您的密码代替XXXX)
在运行Zend Framework应用程序的同一主机上运行此测试PHP脚本。这很重要,因为从一个主机而不是另一个主机连接时,相同的用户名可能有效。如果通过指定主机名调用IP,甚至可以授权用户名通过环回方法(即“localhost”)连接,但不能从同一主机连接。
如果该段落对您没有意义,请阅读The MySQL Access Privilege System,直到有意义为止。