プロジェクト

全般

プロフィール

20260712 サーバ移行07 gitbuckeのVIEWが移行できてなかった » 履歴 » バージョン 1

sylow castle, 2026/07/12 02:42

1 1 sylow castle
# 202600712 サーバ移行07 gitbuckeのVIEWが移行できてなかった
2
3
成功してなかったよ
4
5
## 結論
6
7
> Geminiは次のコマンドを提案:
8
> ```
9
> # dump.sql の中の utf8 をすべて utf8mb4 に置換する
10
> sed -i 's/utf8/utf8mb4/g' gitbucket.sql
11
> ```
12
>
13
>これを実行してgitbucket.sqlを流し込んでやったらあっさり成功。
14
15
移行時にこれをやったのが原因っぽい。
16
どうも一部の構造(ISSUE_OUTLINE_VIEW)に元々utf8mb4という文字コード指定が紛れ込んでいたらしくutf8mb4mb4になって移行に失敗していた。
17
18
## 対応
19
20
他に引越し漏れているものがないか比較するために最新のmysqldumpを取得:
21
22
```
23
mysqldump -u root -p gitbucket > gitbucket_20260712.sql
24
```
25
26
過去のdumpと比較する
27
```
28
diff -u gitbucket.sql gitbucket_20260712.sql > gitbucket.sql.diff
29
vim gitbucket.sql.diff
30
31
```
32
33
目検して問題となる差分がISSUE_OUTLINE_VIEWだけだと確認。gitbucket.sqlからCREATE VIEWの部分を引っ張ってきて修正して流して完成。
34
復旧。
35
36
大したことなくて良かった。
37
ちなみにやはりGeminiに相談してたら次のような教訓をくれたので共有:
38
39
---------------------------------
40
41
> ### 教訓
42
> 
43
> `mysql < dump.sql` でインポートするときは、以下のようにすると「何が起きているか」を確実に見ることができます。
44
> 
45
> 1. **`-v` (verbose) オプションをつける:**
46
> `mysql -v -u user -p dbname < dump.sql`
47
> これをやると、現在実行中のSQL文が逐次表示されるため、どこで止まったかが目視しやすくなります。
48
> 2. **`--show-warnings` をつける:**
49
> インポート中に「無視された警告」の内容を表示してくれます。
50
> 3. **終了ステータスをチェックする:**
51
> スクリプト化する場合は `mysql ... || exit 1` のようにして、エラーが出たら即座に止まるように設定するのが鉄則です。
52
> 
53
> 今回、エラーが出ずに「入っていない」という状況になったのは、MySQLが「理解できないものはコメントとして無視する」という優しさ(?)を発揮した結果、サイレントにスキップされていた、というのが真相でしょうね。
54
55
-----------------------------------
56
57
AIのいう事をよく考えずに鵜呑みにしちゃダメというのが真の教訓かな。当たり前の話だけど。