2010-08-29 48 views
0

我正在测试一些新代码,以便使用PHP插入MySQL数据库。测试当没有错误返回到PHP时调试MySQL插入失败

$stmt->execute(); 
if ($stmt->errorCode() != 0) 
{ 
    $arr = $stmt->ErrorInfo(); 
    throw new Exception('SQL failure:'.$arr[0].':'.$arr[1].':'.$arr[2]); 
} 

它抛出了一些我一一修复的错误。最后,它一扫而空,但没有任何信息写在桌子上。有没有其他测试我可以做,或者我可以设置一个日志来查看问题是什么? MySQL在我的开发PC上本地运行。

感谢您的帮助, 柯特

附:六个月前的类似帖子并没有提出任何进一步的调试手段,我可​​以看到。

+0

$ stmt是PDOStatement的一个实例吗? – VolkerK 2010-08-29 21:18:20

回答

1

我找到了我的问题的答案,但我希望有更好的答案。我将sql语句复制到phpMyAdmin SQL查询窗口中,替换所有变量的文字,然后运行它。我得到了一个错误1426 IIRC,它处理外键不匹配。我得到了那个错误,因为外键表并不是innodb而是其他的。一旦我在数据库中进行了更改,查询就可以正常运行。你会认为这个错误会在errorCode中返回。

0

您可以激活MySQL的General Query Log并留意该日志文件。

+0

我打开了日志,看到活动,但没有执行我的问题陈述时。是否有时MySQL不会报告错误? – curt 2010-08-29 22:51:23

+1

那么我知道至少有一个它不报告的错误。我没有将主键字段设置为自动递增,也没有像INSERT那样提供INSERT值。 – curt 2010-08-29 23:05:51