大家见过在一个事务里,第一次和第二次select中间,手动去更新数据库里的一个数据,第二次select仍然是旧的数据吗?
在一台机器上有这种情况
在另一台上的数据库第二次又可以select正确的数据,貌似不是程序的问题,可能是数据库的配置问题
数据库的查询缓存什么的也关了,没效果
用的连接方式是odbc访问mysql

解决方案 »

  1.   

    默认的参数设置是不会出现你这个问题的   除非你设置的是非自动提交  才会出现这中情况
    autocommit这个参数
      

  2.   

    有在程序里=设autocomit为off,但实际数据库数据已更新了,事务不应该可以读到已提交的数据吗?
      

  3.   

    事务级别是
    | tx_isolation                                                    | REPEATABLE-READ     
      

  4.   

    代码比较多,用的是C++通过ODBC方式
    流程大概是在一个事务里,第一次select一个数据,外面更改了这个数据,第二次select这个数据还是更改之前的数据,而不是更改后的数据
    就是说在这个事务提交之前读不到其他事务已提交的数据
      

  5.   

    我试了一下,把事务级别改成READ-COMMITED后可以读到更新后的数据
    这台机器mysql版本是5.1.56,
    但另外一台机器事务级别是REPEATABLE-READ却可以读到更新后的数据,它的mysql版本是5.1.55
    难道是这两个版本的区别?