我有一个Python脚本,每隔5分钟就会将一个数据库文件上传到我的网站。我的网站允许用户使用PHP查询数据库。
如果用户在上传数据库时尝试运行查询,则会收到错误消息
PHP警告:SQLite3 :: prepare():无法准备语句:11,数据库磁盘映像在第127行的XXX中格式错误
其中第127行只是prepare
函数
$result = $db->prepare("SELECT * FROM table WHERE page_url_match = :pageurlmatch");
有没有办法对此进行测试,并在数据库完成上传后重试用户请求?
答案 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)