SMF2からDiscourseへの移行問題

ガイドに従ってここまで進みましたが、この先に進むことができません。MySQL サーバーにネイティブパスワードで新しいユーザーを作成して試してみましたが、やはり解決しませんでした。

su discourse -c "bundle exec ruby script/import_scripts/smf2.rb /shared/smf2 -t UTC"
既存のグループを読み込み中...
既存のユーザーを読み込み中...
既存のカテゴリを読み込み中...
既存の投稿を読み込み中...
既存のトピックを読み込み中...
Traceback (most recent call last):
        7: from script/import_scripts/smf2.rb:701:in `<main>'
        6: from script/import_scripts/smf2.rb:28:in `run'
        5: from script/import_scripts/smf2.rb:28:in `new'
        4: from script/import_scripts/smf2.rb:62:in `initialize'
        3: from script/import_scripts/smf2.rb:274:in `create_db_connection'
        2: from script/import_scripts/smf2.rb:274:in `new'
        1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect': RSA Encryption not supported - caching_sha2_password plugin was built with GnuTLS support (Mysql2::Error)

これはスクリプトに問題があるようです。コンテナ内で MySQL クライアントをインストールし、コマンドラインから MySQL コンテナ内のデータベースにアクセスできるためです。

OK. これを見つけた方のために、このインポートスクリプトが動作するように調整するのにかなり手間がかかりました。

MySQL の Docker コンテナはバージョン 8 です。

そのためか、MySQL テンプレートが参照する MariaDB ライブラリが機能しませんでした。

Migrate an SMF2 forum to Discourse とは異なる対応として:

インポート Docker コンテナの設定ファイルに MySQL テンプレートファイルを含めませんでした。

インポートコンテナをビルドし、./launcher enter import でコンテナ内に入りました。

その後:

echo "gem 'mysql2'" >> Gemfile
wget https://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.deb
dpkg -i mysql-apt-config_0.8.17-1_all.deb

対話式プロンプトが表示されるので、デフォルト設定(ツール付き MySQL 8)を選択します。

その後、通常の MySQL 8 ライブラリをインストールし、ビルドを続行しました:

apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmysqlclient-dev
su discourse -c 'bundle config unset deployment'
su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'

これで全て完了し、残りの手順は同じでした。インポートが現在実行中です。

Discourse の開発者の方々は、この点に対応するようにインポートスクリプトを調整したいと思うかもしれません。少なくとも、私と同じようにつまずく人がいる場合に参考できるよう、フォーラムに情報が残りました。

「いいね!」 3