Travis-CI是否需要为PHP项目设置SQLite?

时间:2016-09-04 15:42:41

标签: php sqlite pdo travis-ci

我刚开始使用Travis CI,经过几次尝试,我有一个使用MySQL的传递构建(hoora)。 但SQLite构建仍然在第一个PDO->prepare命令上失败(我想因为下一行约为PDO->execute并且日志说我的对象是布尔值而不是PDO对象...)。

以下是代码:

$query = $connection->prepare('UPDATE `user` SET `password`=:password WHERE `id`=1 LIMIT 1;');
$query->bindValue(':password', md5($adminUserPwd), PDO::PARAM_STR);
if (!$query->execute()) { 
    return false;
}

这是构建(PHPUnit)日志:

Error: Call to a member function bindValue() on boolean in /home/travis/build/nioc/web-music-player/tests/TestingTool.php:96

在该步骤之前,我的脚本创建一个SQLite文件:

//drop previous schema
if (file_exists($_SERVER['DOCUMENT_ROOT'].$path)) {
    unlink($_SERVER['DOCUMENT_ROOT'].$path);
}
//create directory if it does not already exist
if (!file_exists(dirname($_SERVER['DOCUMENT_ROOT'].$path))) {
    mkdir(dirname($_SERVER['DOCUMENT_ROOT'].$path), 0700);
}

然后为表创建加载脚本。

以下是SQLite版本的链接:https://travis-ci.org/nioc/web-music-player/jobs/157457638#L190

在本地,所有测试都没问题,我想知道为什么Travis构建失败,也许我忘记了Travis配置?

欢迎任何建议:)

1 个答案:

答案 0 :(得分:0)

好的,我解决了我的问题,SQL请求是:

UPDATE `user` SET `password`=:password WHERE `id`=1 LIMIT 1;

正如documentation中所提到的,SQLite不允许在UPDATE上使用LIMIT子句,除非它是使用SQLITE_ENABLE_UPDATE_DELETE_LIMIT选项编译的。