`
月影无痕
  • 浏览: 1010706 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ecshop MySQL主从复制中的一个小问题

阅读更多

在搭建mysql主从复制结构后,发现mysql从库的日志中频繁出现以下警告:

 

[Warning] Statement may not be safe to log in statement format. Statement: UPDATE `ecshop`.`peixun_sessions` SET expiry = '1300718449', ip = '119.36.87.150', userid = '0', adminid = '0', user_name='0', user_rank='0', discount='1', email='0', data = 'a:3:{s:7:\"from_ad\";i:0;s:7:\"referer\";s:4:\"本站\";s:10:\"login_fail\";i:0;}' WHERE sesskey = '815b45228773afe524f7651ad9b8e84f' LIMIT 1

 

经过检查,这是因为加有limit导致,MySQL认为添加limit会导致主从库数据可能不一致,就出现警告,解决方式有多种,但是对一个处于生产环境中的MySQL主从结构,建议还是从程序入手,尽可能不要修改MySQL配置(既然已经MySQL稳定运行,擅自修改其配置,就可能存在风险)

 

修改ecshop的源文件 includes/cls_session.php

 

大约228行左右找到

return $this->db->query('UPDATE ' . $this->session_table . " SET expiry = '" . $this->_time . "', ip = '" . $this->_ip . "', userid = '" . $userid . "', adminid = '" . $adminid . "', user_name='" . $user_name . "', user_rank='" . $user_rank . "', discount='" . $discount . "', email='" . $email . "', data = '$data' WHERE sesskey = '" . $this->session_id . "' LIMIT 1");

 

将最后的LIMIT 1去掉,即:
return $this->db->query('UPDATE ' . $this->session_table . " SET expiry = '" . $this->_time . "', ip = '" . $this->_ip . "', userid = '" . $userid . "', adminid = '" . $adminid . "', user_name='" . $user_name . "', user_rank='" . $user_rank . "', discount='" . $discount . "', email='" . $email . "', data = '$data' WHERE sesskey = '" . $this->session_id . "'");

 

再找到destroy_session方法的定义中:

$this->db->query('DELETE FROM ' . $this->session_data_table . " WHERE sesskey = '" . $this->session_id . "' LIMIT 1");

        return $this->db->query('DELETE FROM ' . $this->session_table . " WHERE sesskey = '" . $this->session_id . "' LIMIT 1");

 

同样,将 limit 1去掉

 

 

分享到:
评论

相关推荐

    ecshop中构建主从代码

    在ECSHOP的环境中,主从MySQL的配置不仅可以提高数据安全性,还可以减轻主库的压力,提高响应速度。同时,通过监控主从库的状态,我们可以及时发现并解决问题,进一步提升系统的稳定性和可靠性。文件`ecshop_master_...

    ECshop--sqlTest

    在"ECshop--sqlTest"这个压缩包中,我们主要关注的是与数据库操作相关的示例,即SQL测试。数据库是ECShop运行的核心,它存储了商品信息、订单数据、用户资料等所有关键业务数据。下面我们将详细探讨ECShop中的数据库...

    ECSHOP二次开发教程开发手册

    ECSHOP是一款基于PHP语言和MySQL数据库的开源电子商务系统,因其强大的功能和灵活的可扩展性,在国内电商行业中被广泛应用。"ECSHOP二次开发教程开发手册"旨在为开发者提供深入理解并进行ECSHOP系统定制的指导,帮助...

    小京东app服务器端源码.rar_app源码_ecshop app_小京东_小京东 app_小京东APP

    "小京东app服务器端源码.rar" 是一个包含小京东APP应用后端服务代码的压缩文件,它是基于ECSHOP平台进行开发的。ECSHOP是一款知名的开源电商系统,为许多中小企业提供了构建在线商店的解决方案。本文将深入探讨小...

    PHP面试题集锦(包含mysql相关)

    通过MySQL主从复制实现读写分离,提高数据库的读取性能。 **5. 负载均衡** 使用Nginx等负载均衡器分发请求到多个服务器,降低单一服务器的压力。 #### 四、MVC架构原理及其优势 **1. MVC架构组成** - **Model ...

    布尔教育_html教程_课堂代码

    - 针对就业方向,学习实际工作中的技术栈,如SVN、Memcached、页面静态化技术、mysql主从数据库、读写分离等。 - 帮助学员提升就业竞争力,通过学习实战项目来模拟真实工作环境。 9. 学习资源获取 - 自学IT论坛...

    第三阶段-数据库服务大纲.docx

    - **XtraBackup**:一个用于 MySQL 的物理备份工具,支持在线热备份。 - **备份过程**:包括数据文件的复制、日志文件的记录等。 - **恢复过程**:根据备份文件还原数据库状态。 #### 二、MySQL 数据库运维篇 ####...

Global site tag (gtag.js) - Google Analytics