From 178e2eaf632a9083cc895edde76cc2940a3556c2 Mon Sep 17 00:00:00 2001 From: emojized Date: Fri, 18 Mar 2022 02:10:52 +0100 Subject: [PATCH] Fix `General error: 1 no such table: main.task_has_subtasks` See: https://kanboard.discourse.group/t/error-no-such-table-main-task-has-subtasks/1664/15 > The `subtask_time_tracking table` has a wrong foreign key constraint. The constraints references the no-longer-existing table `task_has_subtasks`. --- app/Schema/Sqlite.php | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/app/Schema/Sqlite.php b/app/Schema/Sqlite.php index 7d97e8b93..cf0df92c7 100644 --- a/app/Schema/Sqlite.php +++ b/app/Schema/Sqlite.php @@ -8,7 +8,31 @@ use Kanboard\Core\Security\Token; use Kanboard\Core\Security\Role; use PDO; -const VERSION = 125; +const VERSION = 126; + + +function version_126(PDO $pdo) +{ + $pdo->exec('ALTER TABLE subtask_time_tracking RENAME TO subtask_time_tracking_old'); + + $pdo->exec(' + CREATE TABLE subtask_time_tracking ( + id INTEGER PRIMARY KEY, + user_id INTEGER NOT NULL, + subtask_id INTEGER NOT NULL, + start INTEGER DEFAULT 0, + end INTEGER DEFAULT 0, + time_spent REAL DEFAULT 0, + FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE, + FOREIGN KEY(subtask_id) REFERENCES subtasks(id) ON DELETE CASCADE + ) + '); + + $pdo->exec('DROP INDEX subtasks_task_idx'); + $pdo->exec('CREATE INDEX subtasks_task_idx ON subtasks(task_id)'); + $pdo->exec('INSERT INTO subtask_time_tracking SELECT * FROM subtask_time_tracking_old'); + $pdo->exec('DROP TABLE subtask_time_tracking_old'); +} function version_125(PDO $pdo) {