Mattermostを 5.10.0 から 7.7.1 へバージョンアップした際の備忘録

Mattermostを 5.10.0 から 7.7.1 にバージョンアップした際に嵌った箇所を記録しておきます。

目次

バージョンアップの内容

Mattermost Team Edition 5.10.0 から Mattermost Team Edition 7.7.1(現時点の最新バージョン)にバージョンアップします。

バージョンアップの手順

バージョンアップ後、Mattermostを起動するとエラーが表示されます。

$ sudo systemctl start mattermost
Job for mattermost.service failed because the control process exited with error code. See "systemctl status mattermost.service" and "journalctl -xe" for details.

エラー原因の特定のために、mattermostを単体で起動してみます。

$ sudo ./mattermost
{"timestamp":"2023-01-27 13:54:14.119 +09:00","level":"info","msg":"Server is initializing...","caller":"platform/service.go:165","go_version":"go1.18.1"}
{"timestamp":"2023-01-27 13:54:14.119 +09:00","level":"info","msg":"Pinging SQL","caller":"sqlstore/store.go:238","database":"master"}
{"timestamp":"2023-01-27 13:54:14.129 +09:00","level":"info","msg":"Pinging SQL","caller":"sqlstore/store.go:238","database":"master"}
{"timestamp":"2023-01-27 13:54:14.135 +09:00","level":"fatal","msg":"Failed to apply database migrations.","caller":"sqlstore/store.go:169","error":"driver: mysql, message: failed when applying migration, command: apply_migration, originalError: Error 1072: Key column 'SchemeAdmin' doesn't exist in table, query: \n\nCREATE TABLE IF NOT EXISTS GroupChannels (\n    GroupId varchar(26) NOT NULL,\n    AutoAdd tinyint(1),\n    SchemeAdmin tinyint(1) DEFAULT NULL,\n    CreateAt bigint(20) DEFAULT NULL,\n    DeleteAt bigint(20) DEFAULT NULL,\n    UpdateAt bigint(20) DEFAULT NULL,\n    ChannelId varchar(26) NOT NULL,\n    PRIMARY KEY (GroupId, ChannelId),\n    KEY idx_groupchannels_schemeadmin (SchemeAdmin),\n    KEY idx_groupchannels_channelid (ChannelId)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;\n\nSET @preparedStatement = (SELECT IF(\n    (\n        SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS\n        WHERE table_name = 'GroupChannels'\n        AND table_schema = DATABASE()\n        AND index_name = 'idx_groupchannels_channelid'\n    ) > 0,\n    'SELECT 1',\n    'CREATE INDEX idx_groupchannels_channelid ON GroupChannels (ChannelId);'\n));\n\nPREPARE createIndexIfNotExists FROM @preparedStatement;\nEXECUTE createIndexIfNotExists;\nDEALLOCATE PREPARE createIndexIfNotExists;\n\nSET @preparedStatement = (SELECT IF(\n    (\n        SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS\n        WHERE table_name = 'GroupChannels'\n        AND table_schema = DATABASE()\n        AND index_name = 'idx_groupchannels_schemeadmin'\n    ) > 0,\n    'SELECT 1',\n    'CREATE INDEX idx_groupchannels_schemeadmin ON GroupChannels(SchemeAdmin);'\n));\n\nPREPARE createIndexIfNotExists FROM @preparedStatement;\nEXECUTE createIndexIfNotExists;\nDEALLOCATE PREPARE createIndexIfNotExists;\n\nSET @preparedStatement = (SELECT IF(\n    (\n        SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS\n        WHERE table_name = 'GroupChannels'\n        AND table_schema = DATABASE()\n        AND column_name = 'SchemeAdmin'\n    ) > 0,\n    'SELECT 1',\n    'ALTER TABLE GroupChannels ADD COLUMN SchemeAdmin tinyint(1);'\n));\n\nPREPARE createColumnIfNotExists FROM @preparedStatement;\nEXECUTE createColumnIfNotExists;\nDEALLOCATE PREPARE createColumnIfNotExists;\n\n"}

「Failed to apply database migrations」の記載があるので、データベースに関する何かしらの作業が必要なようです。

バージョンアップに必要な手順が抜けていました

  • 公式サイトの Important Upgrade Notes を確認すると、必要な手順が抜けていました。
  • When upgrading to 7.x from a 5.x release please make sure to upgrade to 5.37.10 first for the upgrade to complete successfully.
  • (5.x リリースから 7.x にアップグレードする場合は、アップグレードを正常に完了するために、最初に 5.37.10 にアップグレードしてください。)

バージョン 5.37.10 を経由します

まず、Mattermost Team Edition 5.37.10 にバージョンアップを行い、その後 Mattermost Team Edition 7.7.1 へバージョンアップを行うと正常にバージョンアップが行えました。

よかったらシェアしてね!

この記事を書いた人

次男が高校ラグビー部での活動を終え、卒部を迎えました。これで、長男、次男ともに中学での野球部、高校でのラグビー部の活動が全て終わりました。9年間怪我をしながらも無事にやり切りました。小学校のソフトボールも入れると15年にもなりました。息子たちも大変でしたが、親も休日は部活動の送迎、応援、動画撮影、編集にと忙しくも楽しい時間を過ごすことができました。

目次
閉じる