gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:20 25 4
gpt4 key购买 nike

我刚开始使用 Travis CI,经过几次尝试,我已经通过了使用 MySQL 的构建 (hoora)。但是 SQLite 构建在第一个 PDO->prepare 命令上仍然失败(我想这是因为下一行是关于 PDO->execute 并且日志说我的对象是一个 bool 值而不是 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 配置的内容?

欢迎任何建议:)

最佳答案

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

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

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

关于php - Travis-CI 是否需要为 PHP 项目设置 SQLite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39318662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com