# XenForoからDiscourseへの移行で問題が発生

**URL:** https://meta.discourse.org/t/troubles-moving-from-xenforo-to-discourse/266060
**Category:** Migration
**Created:** [2020 年 4 月 8 日午前 5:25 UTC](https://meta.discourse.org/t/troubles-moving-from-xenforo-to-discourse/266060 "2020-04-08T05:25:58Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![007](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/007/32/175794_2.png) [@007](https://meta.discourse.org/u/007)
#### Post date: [2020 年 4 月 8 日午前 5:25 UTC](https://meta.discourse.org/t/troubles-moving-from-xenforo-to-discourse/266060/1 "2020-04-08T05:25:58Z")

</div>

> [@Migrate a XenForo forum to Discourse](https://meta.discourse.org/t/migrate-a-xenforo-forum-to-discourse/45232?u=canapin):
>
> Hey guys so after trying for a week or so I decided to import the database on docker app which I hoped it will succeed without any issues. TBH I got some issues at first but it turned to be all easy to solve. Now I would recommend doing this only once before you deploy your production site, after importing everything take a Discourse backup, wipe everything out and install new Discourse instance then restore the imported db. Ok let’s begin: First lets backup your old database from your old …

こんにちは、ステップ 7 から問題が発生しています。ご助言いただければ大変感謝いたします。Ruby を使ったことがないため、ステップ 7 の直前に必要な明らかな手順が経験不足でわかっていない可能性があります。もしこの質問が初歩的だと感じられたらお許しください。

次のコマンドを実行すると：

> [@Cyb3r](#):
>
> echo “gem ‘mysql2’” \>\>Gemfile

以下のエラーが表示されます：

**-bash: Gemfile: Permission denied**

これは、Discourse が正常にインストールされたばかりの新しいサーバーでのことです。

ステップ 7 以降を動作させるために、インストールする必要がある他のコンポーネントやソフトウェアはありますか？

また、このスレッドは数年前に投稿されたものだと気づきました。元の投稿（OP）のすべての手順が現在でも正しいでしょうか？

ありがとうございます！

---

<div class="post-metadata">

### Author: ![007](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/007/32/175794_2.png) [@007](https://meta.discourse.org/u/007)
#### Post date: [2020 年 4 月 9 日午後 4:54 UTC](https://meta.discourse.org/t/troubles-moving-from-xenforo-to-discourse/266060/2 "2020-04-09T16:54:45Z")

</div>

はい、以前ここに投稿を提出しましたが、Docker と Discourse のインストールの仕組みについて深刻な誤解をしていたことに気づき、削除しました。前の投稿は人々を混乱させるものだったでしょう。なぜなら、基本的には自分が何を話しているのか分かっていなかったからです。😂

インポートファイルを手動で `/var/discourse/` ディレクトリに追加しようとしていましたが、実際には Docker 内でそれらを探すべきでした。振り返れば明らかな間違いですが、その当時はかなり混乱していました。手順でもっと明確に説明されていれば良かったかもしれませんが、自分でその点に気づき、問題を解決することができました。

---

<div class="post-metadata">

### Author: ![007](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/007/32/175794_2.png) [@007](https://meta.discourse.org/u/007)
#### Post date: [2020 年 4 月 10 日午後 3:57 UTC](https://meta.discourse.org/t/troubles-moving-from-xenforo-to-discourse/266060/3 "2020-04-10T15:57:18Z")

</div>

100 万件以上の投稿があるフォーラムで、このインポートを成功させることができました。いくつか気づいた点があります。

1. アバターが表示されていません。スクリプトを確認しましたが、アバターに関する参照は見当たりませんでした。念のため確認しますが、アバターはインポートされないのでしょうか？

2. スレッドの閲覧数がすべて 0 です。これは想定された動作でしょうか？

3. ゲスト投稿（ユーザーアカウントが削除され、XenForo 上でユーザー名が「guest」とマークされたもの）はすべて「system」として表示されます。これらを「system」ではなく「guest」として表示させることは可能でしょうか？Discourse は、登録アカウントに紐付かない投稿をサポートしていますか？

アバターやスレッドの閲覧数のインポートをサポートするインポートスクリプトはありますか？それらを確認して、xenforo.rb スクリプトを修正するのがどれほど難しいか検討したいと考えています。

vBulletin と XenForo のデータベースについてはよく理解しています。Discourse 側でスレッドの閲覧数やアバターがどのように格納されているか、適切な方向性を示していただければ、それらを正しくマッピングできます。

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2020 年 4 月 11 日午前 10:22 UTC](https://meta.discourse.org/t/troubles-moving-from-xenforo-to-discourse/266060/4 "2020-04-11T10:22:47Z")

</div>

それらのことはどれも驚きではありません。

一般的に、探しているもの（Avatar）をスクリプトディレクトリで `grep` しています。ビューについては、SQL クエリに追加し、レコード作成時にフィールドを追加するだけでよいと思います。ゲストユーザーについては、ユーザー検索が失敗した場合に `system` を使用する行があります。これを、作成したゲストユーザーに置き換えることができます。

---

<div class="post-metadata">

### Author: ![007](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/007/32/175794_2.png) [@007](https://meta.discourse.org/u/007)
#### Post date: [2020 年 4 月 14 日午前 5:07 UTC](https://meta.discourse.org/t/troubles-moving-from-xenforo-to-discourse/266060/5 "2020-04-14T05:07:42Z")

</div>

このスクリプトを確認しましたが、ソースデータベースの値と完全に一致させるのではなく、なぜIDが1からインクリメントされてしまうのか、原因がわかりません。

既存のURLを転送したいと考えており、そのためにはIDを維持するのが最善の方法です。ユーザーID、投稿ID、トピックID、カテゴリIDなど、すべてのIDを維持したいのです。

しかし、このスクリプトによってそれらのIDがすべて新しいIDに「マッピング」されてしまっています。

インポート後にすべてのIDを同じままに強制できる、何か見落としている明らかな方法はありませんか？

もしこの質問がこのフォーラムの範囲を超えているようであれば、ご容赦ください。いずれにせよ、お読みいただきありがとうございます！👍

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2020 年 4 月 15 日午後 2:54 UTC](https://meta.discourse.org/t/troubles-moving-from-xenforo-to-discourse/266060/6 "2020-04-15T14:54:41Z")

</div>

> [@007](#):
>
> 既存の URL を転送したいと考えています。そのための最善の方法は、ID を一貫して維持することです。ユーザー ID、投稿 ID、トピック ID、カテゴリ ID などです。

それは違います。ユーザー、投稿、トピック、カテゴリごとにパーマリンクを作成する必要があります。管理画面 → カスタマイズ → パーマリンクを参照してください。多くの他のインポーターもパーマリンクの作成をサポートしています。
