我正在将一个文本文件解析为一个空的 sqlite 数据库,以便使用 php 处理文件数据。我建立数据库连接:
try {
$db = new PDO('sqlite:temp.db');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
die($error);
}
由于用户文件数据很大、未排序并且具有多个内部外键依赖项,因此我在外键上使用 DEFERRABLE INITIALLY DEFERRED 将数据作为单个事务插入。只要我的原始输入数据正确,这种方法就可以很好地工作。当发生用户输入错误时,我会得到整个事务的单个通用异常(当然会回滚)。用户错误通常(但并非唯一)表现为未定义的外键引用。
任何人都可以提出一种获取更多信息的方法,例如导致异常的事务中的单个插入语句,或丢失的特定外键,这将有助于跟踪用户输入错误?
由于用户输入数据没有顺序,并且数据结构复杂,因此在提交之前验证它会非常复杂,如果可能的话,我想避免手动编码该方面。