2016-09-04 49 views
2

我剛開始使用Travis CI,經過多次嘗試,我使用MySQL傳遞構建(hoora)。 但SQLite生成仍然失敗的第一個PDO->prepare命令(我想,因爲下一行大約是PDO->execute和日誌說,我的對象是一個布爾,而不是PDO對象...)。Travis-CI是否需要PHP項目的SQLite設置?

下面是代碼:

$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

在本地,所有測試都OK,我不知道爲什麼特拉維斯構建失敗,也許我忘了上特拉維斯配置些什麼呢?

任何建議都是歡迎的。

+0

我給一個新的嘗試通過在git的克隆添加SQLite的目錄,這對我的travis.yml: ' - 搭配chmod -R 777個測試/服務器/數據/' 但它仍然失敗。 – Nioc

回答

0

好吧,我解決我的問題,SQL請求是:

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

正如documentation提到的,SQLite的不允許在更新LIMIT條款,除非它是編號爲SQLITE_ENABLE_UPDATE_DELETE_LIMIT選項。

相關問題