2010-03-08 58 views
0

我有一个奇怪的错误。我启动一个PHP单元测试套件。在开始时,它执行一个大的查询来初始化数据库。一个奇怪的bug,是Mysql异步吗?

如果我在执行sql后放置一个断点,没有问题,我的测试通过。

如果我没有放置任何断点,他们不会通过并且说表格不存在!

它的工作原理就好像sql查询是异步的!

你有这个错误的想法吗?或者如何调试?

回答

0

要进行调试,您需要查看查询日志 - 特别是数据加载完成点附近的事件序列,并开始第一个单元测试。有一个数据库从某处偷偷进入?

查询日志切换使用在配置文件中的设置:

MySQL Manual - 5.1.2 Server Command Options

您可以从MySQL命令行工具内再次切换日志和关闭,但该文件将其写入需要在配置文件中配置并重新启动服务器。

我在使用副本的测试环境中遇到过类似的问题 - 我最终发现我正在写信给主服务器并从副本读取数据。有时候,如果复制足够快,一些测试就会通过。小心你的测试正在做你认为他们正在做的事。

+0

也可以尝试使用交易。更多信息在这里 - http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-transactions.html – dmp 2010-03-09 17:49:40