登录 注册

登录

问题 LOCK TABLES 是必须的么

更多
2011年07月29日 10:20 #1 作者: mei1si
mei1si 创建了话题: LOCK TABLES 是必须的么
ewsidc的主机感觉不错,本打算落地生根了,结果后台无法更新任何东西,提示:
Access denied for user 'xxx'@'localhost' to database 'xxxx' SQL=LOCK TABLES `sta_menu` WRITE

咨询客服1
说LOCK TABLES不支持

这个是必须的么?

登录 或者   注册一个会员帐号 来参与讨论

更多
2011年08月04日 13:07 #2 作者: mei1si
恩,谢谢。 是的。服务器没开放

登录 或者   注册一个会员帐号 来参与讨论

更多
2011年11月22日 09:08 #3 作者: 董希彬
转子:http://bbs.joomladrupal.com/thread-581-1-1.html
问题:
在使用joomla1.6 1.7高版本上传到服务商空间的时候,不知道大家是否遇到添加菜单项等一系列不能操作的问题,提示Access denied for user ... sql=lock table 。
个人研究结果:
解决啦这个问题,分享下经验,避免大家浪费更多时间,当有更好的解决办法或者我分析的不对的地方,看看还有木有比我更好的办法,刚接触joomla第三天,还希望大家多多指教,下面不对的尽请指出:
经过层层测试分析,同时也在网上了解到因为joomla1.5版本操作mysql数据库没有加入lock table机制,而在以后的升级中有啦lock table机制,也是从各个性能和安全方面考虑的。
加入此local table机制后,像在进行菜单项创建是要进行锁表操作的(至于为什么锁表,锁表是什么,我就不废话啦,大家有兴趣自己研究去吧),添加用户这样的就不要此锁表操作,所以你可以试试添加用户是没有上面错误提示的。
分析解决办法:
解决办法目前有两个可行(一个确定,一个还没试验):
A、对joomla操作数据库的用户在mysql里进行lock table的权限分配(这个我没有试验,因为空间商不是自己的,技术不会因为我一个这样破问题给我分配mysql lock table权限)
B、所以方法二就应运而生啦,也是我研究到那么一晚上迫不得已的办法,我又不想换回joomla1.5版本,那就是直接改动joomla1.7源代码吧!把其lock table机制去掉,准好用,如假包换!本人就是这么干的。但是这不如方法一好哦,毕竟joomla1.7版本加入local table机制是为了提高性能也更安全滴,有钱还是买个vps吧,或者你自己办个空间服务商也可以,权限大一点,不会坑爹哦。。。
去掉joomla版本中lock table也很简单,注释joomla里面的响应代码就ok啦,如下:
找到路径下的:路径C:\xampp\htdocs\Joomla_1.7.3-Stable-Full_Package\libraries\joomla\database\table.php,其中这个地方:C:\xampp\htdocs\Joomla_1.7.3-Stable-Full_Package是我的安装路径,请找到属于你自己的,后面路径一样,如果还是找不到,建议你用netbeans打开后查找整个项目的lock table这个两个单词查找整项目(我就是这样干的,netbeans7.0开发php配置xdebug可以很好的开发php,并用来对joomla进行调试,学到跟多不只是表面的东西,研究其源代码更给力,如何配置xdebug可以看我的这篇博文:http://www.sinayou.com/blog/?p=162。)注释掉这下面两个方法里的某些代码,注释后如下:
protected function _lock()
{
// Lock the table for writing.
// $this->_db->setQuery('LOCK TABLES '.$this->_db->quoteName($this->_tbl).' WRITE');
// $this->_db->query();
//
// // Check for a database error.
// if ($this->_db->getErrorNum()) {
// $this->setError($this->_db->getErrorMsg());
//
// return false;
// }
//
// $this->_locked = true;


return true;
}
protected function _unlock()
{
// // Unlock the table.
// $this->_db->setQuery('UNLOCK TABLES');
// $this->_db->query();
//
// // Check for a database error.
// if ($this->_db->getErrorNum()) {
// $this->setError($this->_db->getErrorMsg());
//
// return false;
// }
//
// $this->_locked = false;

return true;
}

还是不明白的可以查看我的这篇博文:http://www.sinayou.com/blog/?p=175
或者加我qq:614118205 单独聊聊,刚研究joomla ,希望认识跟多的朋友!
joomla1.61.7版本提示Access denied for user sql=lock table解决办法mysql解决你啦没,正在看的你,有木有!

登录 或者   注册一个会员帐号 来参与讨论

版主: bithost