在线聊天
guoxd2005 
 
等级: 
可用分等级:长工 
总技术专家分:0 
总技术专家分排名:312798 
揭帖率:66.67%  发表于:2008-09-07 20:15:29 楼主 
各位好, 
    在使用mysql时,遇到一个棘手的问题,请教一下大家,问题如下: 
    
    我的应用要频繁访问mysql, 例如,用户登录时的密码验证等, 因为访问的量比较大, 我在程序中建立了mysql的连接池,当应用程序收到一个验证请求时,首先建立一个新的线程,然后这个线程从连接池获取一个连接,然后在这个连接上面做一些查询操作。我的应用是通过ODBC接口连接的MySQL数据库。 
    
    问题来了, 我的应用启动后,如果在mysql客户端update或insert了数据库中的数据, 但这时应用程序里面的每个连接查询出来的仍然是老的数据,只用重启应用后,才能看得到新的数据。     我首先怀疑是mysql的缓冲区问题, 查看相关资料,说是做update或insert操作会清楚缓冲区的内容,这个应该是没有问题的。     然后, 又怀疑是程序问题,尝试了n中方法,还是同样的结果。     请问,有没有碰到的类似问题的朋友,或请高手指点一下,多谢。  
 

解决方案 »

  1.   

    你用的是InnoDB引擎?
    添加配置参数:transaction-isolation=READ-COMMITTED
    只要update或insert操作,执行了commit以后,应用程序里的任意连接都应该能查出来新的数据。
      

  2.   

    多谢楼上的,搞定了,多谢。
    设置connection的一个属性就可以了 
    SQLSetConnectOption(m_hdbc, SQL_TXN_ISOLATION, SQL_TXN_READ_COMMITTED); 
    结贴