kanboardのバージョンアップ時のSQL移行失敗の話

超超超久しぶりにツイートまとめじゃない更新。

テスト的に使ってるkanboardを1.2.22にアップグレードしようとしたら、SQLの移行でハマった件。

dataディレクトリをバックアップしたあと、ごく普通にアップグレードファイルをコピーして、さて、SQLiteさんに自動移行してもらおうと思ったらエラー発生。

Internal Error: Unable to run SQL migrations: Running migration \Schema\version_125, SQLSTATE[HY000]: General error: 1 table tasks_new has 32 columns but 34 values were supplied (You may have to fix it manually)

なんだろうなーってあれこれ調べてたら、これが該当してた。

Unable to run SQL migrations v1.2.16 to v1.2.17 (sqlite) · Issue #4691 · kanboard/kanboard · GitHub

うちはバージョン1.2.13から1.2.22だからバージョン違いだったけど、メッセージが同じだったので読み進めてみところ、どうやらGroup_assignっていうプラグインが悪さしてる模様。

そんなん入れたっけ…?
と思いつつ、一応DBのschema確認してみたら、いやがりましたよ、 owner_gpさんとowner_msさんが。
 #後で見たらしっかりプラグイン入ってたw
仕方がないので、*/app/Schema/Sqlite.phpCREATE TABLE tasks_newにこの2つ追加して。
無事に1.2.22にアップグレードできましたよっと。
 #schemaの書き方のお約束がよくわかってなくて、何回かエラー吐いたのは秘密w

ま、あくまでテスト的な子だから修正せずに最初っから入れ直しで良かったんだけど、これもまたお勉強のひとつってことで、今後のためにもメモメモ。

■shcemaの確認

%sqlite3 ./DBファイル
SQLite version 3.33.0 2020-08-14 13:23:32
Enter ".help" for usage hints.
sqlite>.schema

■Sqlite.phpの修正

function version_125(PDO $pdo)
{
    $pdo->exec("
      CREATE TABLE tasks_new
        (
            id                   INTEGER PRIMARY KEY,
            title                TEXT NOCASE NOT NULL,
            description          TEXT,
            date_creation        INTEGER,
// 中略
            recurrence_child     INTEGER,
            priority             INTEGER DEFAULT 0,
            external_provider    TEXT,
            external_uri         TEXT,
            owner_gp             INTEGER DEFAULT '0', //追加
            owner_ms             INTEGER DEFAULT '0' //追加