mcpField
B
bitrix-postgresql

bitrix-postgresql

github.com/bxmaximumデータ・データベース47267 回インストール2 週間前に更新
リポジトリ

bitrix-postgresql について

bitrix-postgresql は、Bitrix 環境の MySQL から PostgreSQL への移行を評価・実施するための開発スキルです。移行前の確認、モジュールの対応状況、データベース間で使えるコードの作成方法を扱います。

主な機能

  1. 01PostgreSQL 移行要件の確認
  2. 02非対応モジュールの特定
  3. 03移行ウィザードの利用
  4. 04DBMS 互換コードの作成
  5. 05複数 DBMS 向けテーブル定義

活用シーン

  1. 01本番環境の複製で移行を検証
  2. 02DB 切り替え前にモジュールを監査
  3. 03独自 SQL を PostgreSQL 向けに修正
  4. 04MySQL と PostgreSQL の両対応スキーマを計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bxmaximum/bitrix-framework-skills --skill bitrix-postgresql

インストール後、Claude Code で/bitrix-postgresqlを入力して読み込まれたか確認します。

詳細

PostgreSQL

基準:main 23.900.900+(PostgreSQL 対応版 main の初版) · 検証済み:main 26.800.0、perfmon 25.300.0

Bitrix24 / CMS「Enterprise for Postgres」としてライセンスされています。接続クラスは \Bitrix\Main\DB\PgsqlConnection です。それ以外の connections は bitrix-database と同じです。

移行前

  1. 現在のライセンスで、テスト期間(最長6か月)と切り替えをカバーできる必要があります。Postgres ライセンスではクーポン(テスト後に有効化)と、別のテスト用コピーのキーが提供されます。その間、本番環境は MySQL のままです。
  2. perfmon 24.0.0+、UTF-8 のサイト、テスト用コピーに最新の更新を適用してください。
  3. 本番環境のコピーでリハーサルしてください。その後 MySQL に戻す作業は手動です。
  4. 最終コピーの作成中はサイトを停止してください。

ウィザード perfmon.pgsql(設定 → ウィザード)

  • ステップ0では、install/mysql(または install/db/mysql)を含み、対応する pgsql がないインストール済みモジュールを一覧表示し、アンインストールされるまで処理を停止します。開発フラグファイル bitrix/modules/perfmon/dev がある場合は警告のみを表示し、コピー後に移行先 DB の b_module から削除します(それらのテーブルは残ります)。
  • /bitrix/modules/* のみをチェックします。/local/modules と SQL インストールファイル(install/migrations)のないモジュールはチェックされないため、自分で監査してください。
  • .settings.php に追加の default_pgsql 接続を設定するよう求められ、テーブルをコピーした後に default を切り替えます。
  • 手動(CLI)で移行する場合は、次のコマンドで未対応のモジュールを特定します。
for m in bitrix/modules/*/; do
  for d in install install/db; do
    [ -d "$m$d/mysql" ] && [ ! -d "$m$d/pgsql" ] && echo "no pgsql: $m$d"
  done
done

モジュールのサポート状況(ドキュメント、main 26.800)

  • 未対応:abtest、advertising、b24connector、bitrix.sitecorporate、conversion、form、meeting、photogallery、report、statistic、storeassist、support、translate、webservice、wiki。したがって、translate:index は利用できません。
  • abtest と report には pgsql スクリプトが含まれますが、未対応のままです。スクリプトがあることは、サポートされていることを意味しません。
  • 最近追加されたモジュール:anonymizer 26.100、superset 26.200、note 26.250、biconnector 26.800。Bitrix24 PG ディストリビューションには vibecodeconnector と workflow は含まれていません。
  • Marketplace のモジュールについては、ベンダーに確認してください。

移植可能なコード

  • MySQL 構文ではなく ORM、SqlHelper 関数、SqlExpression プレースホルダーを使用してください。バッククォート、ENGINE=、UNSIGNED、ON DUPLICATE KEY(prepareMerge* を使用)、GROUP_CONCAT、IFNULL は使用しないでください。
  • モジュールスキーマ:main 26.600* 以降は、両方の DBMS で共通の DB 非依存な install/migrations/tables.php を使用します(bitrix-modules)。それより古いカーネルでは、install/db/mysql/ と install/db/pgsql/ の両方にスクリプトが必要です。
  • カラムには timestamp ではなく datetime を使用します。PostgreSQL ではインデックス名はスキーマ全体で一意であるため、テーブル名をインデックス名の先頭に付けてください。移行レイヤーでは長い名前を正規化し、ハッシュ化します(main 26.800)。
  • 複数行の挿入後に getInsertedId() を呼び出すと、最後の ID が返されます(MySQL では最初の ID)。
  • サーバーでは standard_conforming_strings = on に設定してください(main 26.800 以降、サイトチェッカーがこの設定を検査します)。

チェックリスト

  • インストール済みのすべてのモジュールがサポート対象であるか、ウィザードの実行前にアンインストールされている。
  • /local/modules と Marketplace モジュールについて、生の MySQL SQL とインストールスクリプトを監査済みである。
  • カスタムテーブルが install/migrations/tables.php(26.600+)または DBMS ごとの SQL ファイルで定義されている。
  • コピーで移行をリハーサルし、テスト後にのみクーポンを有効化した。

コメント