Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

データベースの接続先変更時に、ユーザー情報だけ移行されない #352

Closed
ars096 opened this issue Apr 15, 2016 · 10 comments

Comments

@ars096
Copy link

ars096 commented Apr 15, 2016

システム設定 > データベースの接続先変更 ページにて、PostgreSQL への移行を試しています。
本文や添付ファイルはコピーされるが、ユーザー情報がコピーされず、ページは閲覧できるがログインできない、という症状が起こりました。

以下、状況を整理してみます:

  • データ
    • 登録ユーザー数 : 30
    • 投稿数 : 29
    • 添付ファイル数 : 14
    • knowledge_db.mv.db のファイルサイズ : 135 MB
  • 症状
    • 投稿の閲覧 : 可能
    • 添付ファイルのダウンロード : 可能
    • ログイン : ID/パスワードが一致しませんとのエラー
    • テーブルのコピー状況
      • knowledges : コピーされている
      • knowledge_files : コピーされている
      • knowledge_users : コピーされている
      • users : 空のまま

ちなみに、試しに、3ユーザー、5投稿、2添付ファイルくらいの小さなデータを作って、H2 -> PostgreSQL -> H2 と変更を何度か行ってみたところ、ちゃんとユーザー情報も含めて正常にコピーされていました。

@koda-masaru
Copy link
Contributor

koda-masaru commented Apr 17, 2016

ご連絡ありがとうございます。
なんでusersだけコピー出来なかったのか、調べてみます。

@nagodon
Copy link
Contributor

nagodon commented Apr 19, 2016

僕も前にこの状況に遭遇してその時は一部のユーザのデータが移行されない状態だったんですよね。
ただこの問題は修正(#100)行ったんですよね。

完全に移行されないパターンなので僕の時とは違う問題かもですね。
エラーログ見れると何かわかるかもしれません。

@ars096 エラーログを見ることは貼ってもらうことは可能でしょうか?

@ars096
Copy link
Author

ars096 commented Apr 21, 2016

コメントありがとうございます。

正常動作の時と、users がコピーできなかった時で app.log を取得し、見比べてみました。

  • notices table のコピー時にエラーが起きています
  • その後、コピーが中断されてしまうので、users を含むいくつかの table がコピーされていなさそうです

app.log を添付します。

@koda-masaru
Copy link
Contributor

ログの添付ありがとうございます。
データ移行の際に、データ移行元と移行先のテーブル構造を合わせている処理があるのですが、
うまく構造があっていないのかもしれません(?)
もう少しデバッグしてみます。

@koda-masaru
Copy link
Contributor

コピー元のDBのマイグレーションが正しく完了していない事が原因かもしれません。

Knowledgeを再起動(Tomcatを再起動)して、再度データのコピーを試していただけないでしょうか?
(起動時に、DBのマイグレーションを実行しています)

@ars096
Copy link
Author

ars096 commented Apr 22, 2016

Knowledge を再起動 (docker restart) をしてみましたが、同じ結果となりました (notices のコピーでコケる)。
次の手順を踏みました:

  • 本番環境にて
    • ログイン
    • 組み込み DB を停止
    • docker restart
    • 再度ログイン
    • 組み込み DB を停止
    • バックアップ
  • 作業環境にて
    • docker run
    • ログイン
    • 組み込み DB を停止
    • バックアップを復元
    • docker restart
    • 再度ログイン
    • データベースの切り替え
    • ログインしようとするとエラー
    • app.log を確認すると、notices table のコピー時にエラー

@koda-masaru
Copy link
Contributor

ありがとうございます。
私もDockerの環境を作ってみて、試してみようと思います。

GWまで、ちょっと時間がとれないかもですが、解析できたらご連絡いたします。

koda-masaru added a commit that referenced this issue Apr 28, 2016
@koda-masaru koda-masaru added this to the v1.4 milestone May 10, 2016
@ars096
Copy link
Author

ars096 commented May 19, 2016

追加でコピー元の H2 のファイルの方を少し調べてみました。

  • DB 移行中のログファイルに「[DatabaseMetaDataDao(114)] Read Table info: access_logs」の様に記述があるのに、H2 の DB に無いテーブル
  • SELECT * FROM SYSTEMS; の結果
    • SYSTEM_NAME : knowledge
    • VERSION : 1.1.0.pre1 (1.3.1 を入れたはずだったけど...?)

何かしら役にたつでしょうか....

@koda-masaru
Copy link
Contributor

ご連絡ありがとうございます。
確認したいのですが、動作させているのはリリースされたものでしょうか?
それとも開発中のソース(developブランチ)で動作を確認していますでしょうか?

リリースしている、v1.3.1では、まだread_marksテーブルなどは追加されていないので、
たぶん、開発中のソースで一回は動作を確認したのでは?と思います。
(起動時にDBをマイグレーションします。)

もし、そのような状態であれば、もうすぐ v1.4.0をリリースしますので、
そちらで動作を確認してみてください。
たぶん、、、動くようになるのでは?と思います。

@koda-masaru
Copy link
Contributor

解析できていないのですが、現象が再現できません。
#742 と同じ原因かもしれません。
いったん本Issueはクローズし、 #832 で管理します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants