Перенос БД postgresql с Windows на FreeBSD
Казалось бы, всё просто: делаем дамп с windows сервер и заливаем его. Тем не менее, при заливке сразу возникла ошибка:
ERROR: invalid locale name: "Russian_Russia.1251"
Вызванная тем, что в FreeBSD (как и в Linux) такой локали нет. Имеющиеся локали
можно посмотреть командой locale -a
Русские локали можно найти так: locale -a | grep ru
Соответсвенно, в дампе нужно заменить несуществующую "Russian_Russia.1251" на существующую локаль, например "ru_RU.CP1251"
Важно, чтобы новая локаль была согласована с указанной в дампе кодировкой БД. При несоответствии можно получить ошибку вроде такой:
ERROR: encoding "UTF8" does not match locale "ru_RU.CP1251"
Т.е .если для БД указана кодировка UTF-8, то и локаль должна быть "ru_RU.UTF-8"