超超超久しぶりにツイートまとめじゃない更新。
テスト的に使ってる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.phpのCREATE 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' //追加