Application: "Bacula Dir/SD 5.2/7.4" и "PostgreSQL".
Если "база данных" для "Bacula" в СУБД "PostgreSQL" была создана не в требуемой кодировке "SQL_ASCII" (наследие системы именований "томов" для ленточных накопителей), то работать это в больше части функционала будет, но журнал событий наполнят предупреждения о некорректно настроенной БД:
... Warning: Encoding error for database "bacula". Wanted SQL_ASCII, got UTF8
В таком случае лучше переконвертировать БД в кодировку "SQL_ASCII", как этого хочется "Bacula".
Прежде всего останавливаем использующие "базу данных" сервисы:
# /etc/init.d/bacula-director stop
# /etc/init.d/bacula-sd stop
# /etc/init.d/bacula-sd stop
Выгружаем SQL-дамп с указанием желаемой кодировки:
# su - postgres
postgres@bacula:~$ pg_dump -U postgres --encoding SQL_ASCII bacula -f ./bacula_ascii.sql
postgres@bacula:~$ pg_dump -U postgres --encoding SQL_ASCII bacula -f ./bacula_ascii.sql
Создаём новую БД, уже в нужной кодировке "SQL_ASCII":
postgres@bacula:~$ echo "CREATE DATABASE bacula_ascii WITH OWNER = 'bacula' ENCODING = 'SQL_ASCII' LC_COLLATE = 'C' LC_CTYPE = 'C' TEMPLATE = 'template0'" | psql -U postgres
Проверяем успешность создания БД:
postgres@bacula:~$ psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+--------+-----------+-------------+-------------+-------------------
bacula | bacula | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/bacula +
| | | | | bacula=CTc/bacula
bacula_ascii | bacula | SQL_ASCII | C | C |
....
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+--------+-----------+-------------+-------------+-------------------
bacula | bacula | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/bacula +
| | | | | bacula=CTc/bacula
bacula_ascii | bacula | SQL_ASCII | C | C |
....
Загружаем в новую БД данные из "дампа", заранее созданного в нужной кодировке:
postgres@bacula:~$ psql -U postgres -f ./bacula_ascii.sql -d bacula_ascii
Переименовываем старую и новую БД, сохраняя предыдущую на всякий случай, и подставляя вместо неё новую:
postgres@bacula:~$ echo "ALTER DATABASE bacula RENAME TO bacula_utf8" | psql -U postgres
postgres@bacula:~$ echo "ALTER DATABASE bacula_ascii RENAME TO bacula" | psql -U postgres
postgres@bacula:~$ echo "ALTER DATABASE bacula_ascii RENAME TO bacula" | psql -U postgres
Явно выдаём пользователю "bacula" полные права на работу с новой БД:
postgres@bacula:~$ echo "GRANT ALL PRIVILEGES ON DATABASE bacula TO bacula" | psql -U postgres
Проверяем результат операций:
postgres@bacula:~$ psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------+----------+-----------+-------------+-------------+-------------------
bacula | bacula | SQL_ASCII | C | C | =Tc/bacula +
| | | | | bacula=CTc/bacula
bacula_utf8 | bacula | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/bacula +
| | | | | bacula=CTc/bacula
....
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------+----------+-----------+-------------+-------------+-------------------
bacula | bacula | SQL_ASCII | C | C | =Tc/bacula +
| | | | | bacula=CTc/bacula
bacula_utf8 | bacula | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/bacula +
| | | | | bacula=CTc/bacula
....
Запускаем сервисы, использующие БД:
# /etc/init.d/bacula-sd start
# /etc/init.d/bacula-director start
# /etc/init.d/bacula-director start