Baseline: main 23.900.900+ (first PostgreSQL-capable main) · Verified: main 26.800.0, perfmon 25.300.0
Licensed as Bitrix24 / CMS "Enterprise for Postgres". Connection class \Bitrix\Main\DB\PgsqlConnection; the rest of connections is as in bitrix-database.
Before migrating
- Current license must cover the test period (up to 6 months) and the switch. The Postgres license gives a coupon (activate after testing) and a key for a separate test copy; production stays on MySQL meanwhile.
perfmon24.0.0+, site in UTF-8, the latest updates on the test copy.- Rehearse on a copy of production; going back to MySQL afterwards is manual work.
- Close the site during the final copy.
Wizard perfmon.pgsql (Settings → Wizards)
- Step 0 lists installed modules that ship
install/mysql(orinstall/db/mysql) without thepgsqltwin and blocks until you uninstall them. With the dev flag filebitrix/modules/perfmon/devit only warns and removes them fromb_modulein the target DB after copying (their tables stay). - It checks
/bitrix/modules/*only./local/modulesand modules without SQL install files (install/migrations) are never checked: audit them yourself. - It asks for an extra
default_pgsqlconnection in.settings.php, copies the tables, then you switchdefault. - Manual (CLI) migration: find unsupported modules with
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
Module support (docs, main 26.800)
- Not supported: abtest, advertising, b24connector, bitrix.sitecorporate, conversion, form, meeting, photogallery, report, statistic, storeassist, support, translate, webservice, wiki.
translate:indexis therefore unavailable. - abtest and report ship pgsql scripts but are still unsupported: scripts ≠ support.
- Added recently: anonymizer 26.100, superset 26.200, note 26.250, biconnector 26.800. The Bitrix24 PG distribution has no vibecodeconnector and no workflow.
- Marketplace modules: confirm with the vendor.
Portable code
- ORM,
SqlHelperfunctions andSqlExpressionplaceholders instead of MySQL syntax: no backticks,ENGINE=,UNSIGNED,ON DUPLICATE KEY(useprepareMerge*),GROUP_CONCAT,IFNULL. - Module schema: Since main 26.600* one DB-agnostic
install/migrations/tables.phpfor both DBMS (bitrix-modules); older kernels need pairedinstall/db/mysql/andinstall/db/pgsql/scripts. - Columns:
datetime, nottimestamp. Index names are schema-wide in PostgreSQL: prefix them with the table name. The migration layer normalizes and hashes long names (main 26.800). getInsertedId()after a multi-row insert is the last ID (MySQL: the first).- Server:
standard_conforming_strings = on(the site checker tests it since main 26.800).
Checklist
- Every installed module is supported or uninstalled before the wizard.
-
/local/modulesand marketplace modules audited for raw MySQL SQL and install scripts. - Custom tables described via
install/migrations/tables.php(26.600+) or paired SQL files. - Migration rehearsed on a copy; coupon activated only after testing.