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 加密不支持 - caching_sha2_password 插件是使用 GnuTLS 支持构建的 (Mysql2::Error)

请协助我解决此问题。

这似乎是一个脚本问题,因为我可以在容器中安装 MySQL 客户端,并通过命令行访问 MySQL 容器中的数据库。

好的。对于那些遇到这个问题的人,我不得不花了不少功夫调整这个导入脚本才能让它正常运行。

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 个赞