| name | bitrix-postgresql |
| description | Covers PostgreSQL support in Bitrix — PgsqlConnection, migration from MySQL, compatible code, module support matrix. Applied when configuring or migrating to PostgreSQL Enterprise editions. Key terms — PostgreSQL, PgsqlConnection, migration, compatible-code. |
PostgreSQL in Bitrix
Baseline: main 23.0+. Supported in Enterprise for PostgreSQL licenses (B24 and CMS). Connection class: \Bitrix\Main\DB\PgsqlConnection.
Configuration
'connections' => [
'value' => [
'default' => [
'className' => \Bitrix\Main\DB\PgsqlConnection::class,
'host' => 'localhost',
'database' => 'bx',
'login' => 'bx',
'password' => '***',
'options' => \Bitrix\Main\DB\Connection::DEFERRED,
],
],
'readonly' => true,
],
Before Migration
- Obtain Enterprise for PostgreSQL license (test key available for 6 months).
- Update Performance Monitor module to 24.0.0+.
- Project must use UTF-8 encoding.
- Close site to visitors during migration.
- Test on staging first — return to MySQL after production PostgreSQL launch requires manual work.
Module Compatibility
Not all kernel and marketplace modules support PostgreSQL. Incompatible modules are disabled during conversion wizard.
Check custom code:
- MySQL-specific SQL (
LIMIT syntax differences handled by SqlHelper, but raw SQL may break).
- MySQL install scripts under
install/mysql/ or install/db/mysql/ need matching PostgreSQL scripts under install/pgsql/ or install/db/pgsql/.
Find modules missing pgsql install:
for mysql in bitrix/modules/*/install/mysql/install.sql bitrix/modules/*/install/db/mysql/install.sql; do
pgsql=$(echo $mysql | sed 's#/mysql/#/pgsql/#')
test -e $pgsql || echo "missing: $pgsql"
done
Check kernel module install folders: each supporting module should have matching install/pgsql/ or install/db/pgsql/ scripts. Inspect bitrix/modules/<module>/install/ in the project.
Migration Methods
- Wizard — Admin conversion tool (lists disabled modules on step 1).
- CLI — manual server-side migration via Performance Monitor module tools.
Writing Compatible Code
- Use ORM and
SqlHelper — avoid MySQL-specific functions in raw SQL.
- Use
SqlExpression placeholders instead of string concatenation.
- Test DDL in both MySQL (
install/mysql/ or install/db/mysql/) and PostgreSQL (install/pgsql/ or install/db/pgsql/) if the module supports both.
- Avoid
ENGINE=InnoDB, backticks-specific syntax, UNSIGNED.
Checklist