# 以前は成功していたにもかかわらず、2つのフォーラムをマージする際にPG::ConnectionBadの問題が発生

**URL:** https://meta.discourse.org/t/problem-pg-connectionbad-when-merging-two-forums-despite-several-previous-successes/235173
**Category:** Self-hosting
**Created:** [2022 年 8 月 4 日午後 10:03 UTC](https://meta.discourse.org/t/problem-pg-connectionbad-when-merging-two-forums-despite-several-previous-successes/235173 "2022-08-04T22:03:18Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![McFly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcfly/32/257919_2.png) [@McFly](https://meta.discourse.org/u/McFly)
#### Post date: [2022 年 8 月 4 日午後 10:03 UTC](https://meta.discourse.org/t/problem-pg-connectionbad-when-merging-two-forums-despite-several-previous-successes/235173/1 "2022-08-04T22:03:18Z")

</div>

こんにちは。

4月にテストサーバーで2つのフォーラムのマージを正常に完了しましたので、今回、本番環境で2つのフォーラムをマージすることにしました。

当時の手順に従ったところ、マージスクリプトを実行する際にPostgresへの接続エラーが発生しました。

4日間試行錯誤していますが、開発者ではないため、問題の特定には限界があります。

よろしくお願いいたします。

以下がエラーメッセージです。

```plaintext
discourse@serveur-app:/var/www/discourse$ IMPORT=1 DB_NAME=copyme DB_PASS=passwdDB SOURCE_BASE_URL=http://old.forum.fr UPLOADS_PATH=/var/www/discourse/public/uploads/default bundle exec ruby script/bulk_import/discourse_merger.rb
Loading application...
Traceback (most recent call last):
        5: from script/bulk_import/discourse_merger.rb:817:in `<main>'
        4: from script/bulk_import/discourse_merger.rb:817:in `new'
        3: from script/bulk_import/discourse_merger.rb:22:in `initialize'
        2: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/pg-1.4.2/lib/pg.rb:69:in `connect'
        1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/pg-1.4.2/lib/pg/connection.rb:661:in `new'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/pg-1.4.2/lib/pg/connection.rb:708:in `connect_to_hosts': could not match 0 port numbers to 1 hosts (PG::ConnectionBad)

```

# 

* * *

**この機会に、完全なマージ手順を提示します。**

> この手順は、[元の投稿](https://meta.discourse.org/t/how-to-merge-two-discourse-sites/95435)と[テスト中に発生した問題](https://meta.discourse.org/t/problem-for-merge-two-forum/225189)に基づいています。

この手順は4月にも機能しました（[このトピックを参照](https://meta.discourse.org/t/problem-for-merge-two-forum/225189)）。

- 2つのフォーラムの最新のバックアップから開始します。
- Discourseをインストールします。
- 2つのバックアップをインポートします。
- 保持するフォーラムを復元します。

SSHで：

- `/var/discourse`フォルダに移動します。
- `app`に入るには`./launcher enter app`と入力します。

**DBを作成します。**

```plaintext
su postgres
psql

```

```plaintext
CREATE DATABASE copyme ENCODING='utf8';

```

**postgresユーザーのパスワードを変更します。**

```plaintext
\postgres password

```

postgresから終了します。

```plaintext
\q

```

postgresユーザーを終了します。

```plaintext
exit

```

discourseユーザーに切り替えます。

```plaintext
su discourse

```

**古いフォーラムのバックアップ解凍**  
そのフォルダに移動します `cd public/backups/default`  
OLDバックアップをコマンド `tar xvzf old.forum.tar.gz` で展開します。

**BDD.luからBDD copymeへのコピー。**

```plaintext
gunzip < dump.sql.gz | psql -d copyme

```

discourseユーザーを終了します。

```plaintext
exit

```

### 依存関係

**nano, sqlite3, mysql2の依存関係**  
（rootユーザーで`/var/www/discourse`にて）

```plaintext
apt update && apt upgrade -y
apt-get install -y nano sqlite3 libsqlite3-dev mariadb-server libmariadb-dev -y
gem install sqlite3 mysql2

```

**ruby bbcode to md**

```plaintext
git clone https://github.com/nlalonde/ruby-bbcode-to-md.git
cd ruby-bbcode-to-md/
gem build ruby-bbcode-to-md.gemspec
gem install ruby-bbcode-to-md-*.gem
cd ./..

```

**Tiny\_tdsのインストール**  
まずFreeTDS、次にTiny\_tdsをインストールする必要があります。  
FreeTDSの場合：

```plaintext
wget http://www.freetds.org/files/stable/freetds-1.3.12.tar.gz
tar -xzf freetds-1.3.12.tar.gz
cd freetds-1.3.12
./configure --prefix=/usr/local --with-tdsver=7.3
make
make install

```

Tiny\_tdsの場合：

```plaintext
gem install tiny_tds
gem install ruby-bbcode-to-md
cd ./..

```

#### スクリプト

```plaintext
su discourse
bundle config unset deployment
IMPORT=1 bundle install
IMPORT=1 DB_NAME=copyme DB_PASS=passwdDB SOURCE_BASE_URL=http://old.forum.fr UPLOADS_PATH=/var/www/discourse/public/uploads/default bundle exec ruby script/bulk_import/discourse_merger.rb

Translated with www.DeepL.com/Translator (free version)
```

---

<div class="post-metadata">

### Author: ![McFly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcfly/32/257919_2.png) [@McFly](https://meta.discourse.org/u/McFly)
#### Post date: [2022 年 8 月 5 日午後 7:33 UTC](https://meta.discourse.org/t/problem-pg-connectionbad-when-merging-two-forums-despite-several-previous-successes/235173/2 "2022-08-05T19:33:46Z")

</div>

こんにちは。

Postgresはポート5432を使用します（psqlコマンドで `\\conninfo` で確認できます）が、残念ながら `connection.rb` ファイルではポート5433が呼び出されています。

パスワードは `psql postgres://postgres:password@127.0.0.1:5432` コマンドで確認済みで、問題ありません。

ポートにエラーがないか確認していただけますでしょうか？

よろしくお願いします。

---

<div class="post-metadata">

### Author: ![cocococosti](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cocococosti/32/231474_2.png) [@cocococosti](https://meta.discourse.org/u/cocococosti)
#### Post date: [2022 年 8 月 5 日午後 9:41 UTC](https://meta.discourse.org/t/problem-pg-connectionbad-when-merging-two-forums-despite-several-previous-successes/235173/3 "2022-08-05T21:41:50Z")

</div>

同じエラーが発生しました。DB設定でポートがロードされていないようです。[discourse/script/bulk\_import/discourse\_merger.rb at main · discourse/discourse · GitHub](https://github.com/discourse/discourse/blob/main/script/bulk_import/discourse_merger.rb#L21)

Railsコンソールから実行すると、次のようになります。

```plaintext
[1] pry(main)> ActiveRecord::Base.connection_db_config.configuration_hash
=> {:prepared_statements=>false,
 :adapter=>"postgresql",
 :database=>"discourse_development",
 :min_messages=>"warning",
 :pool=>5,
 :timeout=>5000,
 :checkout_timeout=>5,
 :advisory_locks=>false,
 :host_names=>["localhost"],
 :variables=>{}}

```

ポートが設定に含まれていませんが、コードは含まれていると想定しています。[discourse/script/bulk\_import/discourse\_merger.rb at main · discourse/discourse · GitHub](https://github.com/discourse/discourse/blob/main/script/bulk_import/discourse_merger.rb#L22)

これはコアでは修正されていますが、ポートを手動で設定できます。したがって、次のようにします。

```plaintext
@raw_connection = PG.connect(dbname: local_db[:database], host: 'localhost', port: local_db[:port], user: 'postgres', password: db_password)

```

次のように使用します。

```plaintext
@raw_connection = PG.connect(dbname: local_db[:database], host: 'localhost', port: 5432, user: 'postgres', password: db_password)

```

---

<div class="post-metadata">

### Author: ![McFly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcfly/32/257919_2.png) [@McFly](https://meta.discourse.org/u/McFly)
#### Post date: [2022 年 8 月 5 日午後 9:51 UTC](https://meta.discourse.org/t/problem-pg-connectionbad-when-merging-two-forums-despite-several-previous-successes/235173/4 "2022-08-05T21:51:58Z")

</div>

> [@cocococosti](#):
>
> `@raw_connection = PG.connect(dbname: local_db[:database], host: 'localhost', port: 5432, user: 'postgres', password: db_password)`

ありがとうございます、ありがとうございます、ありがとうございます

ポートを `5432` で試しましたが、5432 ではだめでした。

ハンドルバーに頭を突っ込んでいると、物事を見逃してしまいます。

重ねてお礼申し上げます。

---

<div class="post-metadata">

### Author: ![pi88](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pi88/32/270964_2.png) [@pi88](https://meta.discourse.org/u/pi88)
#### Post date: [2022 年 8 月 20 日午前 3:12 UTC](https://meta.discourse.org/t/problem-pg-connectionbad-when-merging-two-forums-despite-several-previous-successes/235173/5 "2022-08-20T03:12:42Z")

</div>

@McFly、完全なガイドをまとめてくれてありがとう。これは役立ちます。これらの手順はすべて自動化できますか？そして、それのためにcronジョブを作成しますか？

---

<div class="post-metadata">

### Author: ![McFly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcfly/32/257919_2.png) [@McFly](https://meta.discourse.org/u/McFly)
#### Post date: [2022 年 8 月 20 日午前 5:41 UTC](https://meta.discourse.org/t/problem-pg-connectionbad-when-merging-two-forums-despite-several-previous-successes/235173/6 "2022-08-20T05:41:41Z")

</div>

こんにちは。

通常は繰り返すべきではない汚れだと知っていますが、役に立つかどうかはわかりません。

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2022 年 9 月 19 日午前 5:42 UTC](https://meta.discourse.org/t/problem-pg-connectionbad-when-merging-two-forums-despite-several-previous-successes/235173/7 "2022-09-19T05:42:33Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
