PostgreSQL database migration issues

Ali Alnubani alialnu at nvidia.com
Wed Jan 11 17:27:34 UTC 2023


Hello,

Restoring Bugzilla from a backup or upgrading to a newer version fails when the db driver is PostgreSQL. To reproduce:

Initialize a new Bugzilla instance:
$ sudo -u postgres -- createdb bugzilla --encoding='UTF-8' --locale=en_US.UTF-8 --owner=bugzilla

Run checksetup.pl:
$ sudo /path/to/bugzilla/checksetup.pl
* This is Bugzilla 5.1.2 on perl 5.32.1
* Running on Linux 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30)
[..]
checksetup.pl complete.

Backup the DB (https://bugzilla.readthedocs.io/en/latest/installing/backups.html#postgresql):
$ sudo -u postgres -- pg_dump --no-privileges --no-owner bugzilla > bugzilla.sql

Drop and restore DB from backup:
$ sudo -u postgres -- dropdb bugzilla
$ sudo -u postgres -- createdb bugzilla --encoding='UTF-8' --locale=en_US.UTF-8 --owner=bugzilla
$ sudo -u postgres -- psql --single-transaction -d bugzilla -f bugzilla.sql -v ON_ERROR_STOP=1
$ echo $?
0

Rerun checksetup.pl:
$ sudo /path/to/bugzilla/checksetup.pl
[..]
Adding new table bz_schema...
DBD::Pg::db do failed: ERROR:  relation "bz_schema" already exists at Bugzilla/DB.pm line 818.
	Bugzilla::DB::_bz_add_table_raw(Bugzilla::DB::Pg=HASH(0x55d32cb8e638), "bz_schema") called at Bugzilla/DB.pm line 1350
	Bugzilla::DB::_bz_init_schema_storage(Bugzilla::DB::Pg=HASH(0x55d32cb8e638)) called at Bugzilla/DB.pm line 478
	Bugzilla::DB::bz_setup_database(Bugzilla::DB::Pg=HASH(0x55d32cb8e638)) called at Bugzilla/DB/Pg.pm line 237
	Bugzilla::DB::Pg::bz_setup_database(Bugzilla::DB::Pg=HASH(0x55d32cb8e638)) called at /var/www/html/bugzilla/checksetup.pl line 167

I looked at a related thread (https://lists.bugzilla.org/pipermail/support-list/2021-September/000042.html), but this isn’t caused by an incomplete db import, it’s probably about missing permissions, but that’s not documented, and the error is misleading.

Upgrading from 5.1.2 to 5.2 also fails due to permission issues:
$ sudo /path/to/bugzilla/checksetup.pl
[..]
Updating column cookie in table logincookies ...
Old: varchar(22) PRIMARY KEY NOT NULL
New: varchar(16) PRIMARY KEY NOT NULL
DBD::Pg::db do failed: ERROR:  must be owner of table logincookies at Bugzilla/DB.pm line 64.
        Bugzilla::DB::__ANON__(Bugzilla::DB::Pg=HASH(0x559d54b1f818), "ALTER TABLE logincookies ALTER COLUMN cookie\x{a}                "...) called at Bugzilla/DB.pm line 789
        Bugzilla::DB::bz_alter_column_raw(Bugzilla::DB::Pg=HASH(0x559d54b1f818), "logincookies", "cookie", HASH(0x559d54e69ea0), HASH(0x559d54c50e18), undef) called at Bugzilla/DB.pm line 748
        Bugzilla::DB::bz_alter_column(Bugzilla::DB::Pg=HASH(0x559d54b1f818), "logincookies", "cookie", HASH(0x559d54e69ea0)) called at Bugzilla/Install/DB.pm line 437
        Bugzilla::Install::DB::update_table_definitions(HASH(0x559d4e4446b8)) called at ./checksetup.pl line 175

Am I missing something?

OS: Debian 11 (bullseye)
Bugzilla: release-5.1.2 (3c74d53fb)
PostgreSQL: 13.5 (Debian 13.5-0+deb11u1)
libdbd-pg-perl: 3.14.2-1+b1

Thanks,
Ali


More information about the support-list mailing list