错误数据库的PHP测试

时间:2015-12-10 20:33:06

标签: php python sqlite error-handling

我有一个Python脚本,每隔5分钟就会将一个数据库文件上传到我的网站。我的网站允许用户使用PHP查询数据库。

如果用户在上传数据库时尝试运行查询,则会收到错误消息

  

PHP警告:SQLite3 :: prepare():无法准备语句:11,数据库磁盘映像在第127行的XXX中格式错误

其中第127行只是prepare函数

$result = $db->prepare("SELECT * FROM table WHERE page_url_match = :pageurlmatch");

有没有办法对此进行测试,并在数据库完成上传后重试用户请求?

2 个答案:

答案 0 :(得分:1)

最佳选择是将数据库上传到单独的%DBNAME%_temp,上传完成后只需删除旧数据库,然后将新数据重命名为%DBNAME%

但是,如果这不是一个选项,您可以尝试在创建PDO对象时通过$options数组指定对任何错误抛出异常。

new PDO($dsn, $username, $password, [
    PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,
])

然后只需使用try { ... } catch来捕获此警告并重新运行用户查询。

答案 1 :(得分:1)

不一定与PHP有关但我最后修改Python代码以使用临时名称上传文件然后重命名

import ftplib
FTP.storbinary("STOR " + UPLOAD_FILE_NAME + ".bak", myfile) 
FTP.rename(UPLOAD_FILE_NAME + ".bak", UPLOAD_FILE_NAME)