我刚开始使用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配置?
欢迎任何建议:)
答案 0 :(得分:0)
好的,我解决了我的问题,SQL请求是:
UPDATE `user` SET `password`=:password WHERE `id`=1 LIMIT 1;
正如documentation中所提到的,SQLite不允许在UPDATE上使用LIMIT
子句,除非它是使用SQLITE_ENABLE_UPDATE_DELETE_LIMIT
选项编译的。