Я столкнулся с проблемой сортировки по имени с swedi sh данными. Как изменить параметры сортировки для некоторого существующего столбца или для таблицы в Postgres 9,6 в docker.
, когда я пытаюсь изменить его для таблицы
alter table brnad convert to character set utf8 collate utf8_swedish_ci;
, с ошибкой
> ERROR: syntax error at or near "convert"
, когда я пытаюсь использовать для столбца
ALTER TABLE brand ALTER COLUMN name SET DATA TYPE character varying(255) COLLATE 'utf8_swedish_ci'
с той же ошибкой
ALTER TABLE brand ALTER COLUMN name SET DATA TYPE character varying(255) COLLATE 'utf8_swedish_ci'
> ERROR: syntax error at or near "'utf8_swedish_ci'"
LINE 1: ...name SET DATA TYPE character varying(255) COLLATE 'utf8_swed...
^
> Time: 0.001s
Я предположил, что возможно проблема с контейнером и исследовательской информацией о locale-gen
docker -компози. yml
postgres:
image: postgres:9.6
command: locale-gen sv_SE.utf8
ports:
- '5432:5432'
container_name: 'postgresql'
working_dir: /app
restart: always
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
LANG: 'sv_SE.UTF-8'
LANGUAGE: 'sv_SE.UTF-8'
LC_ALL: 'sv_SE.UTF-8'
LC_COLLATE: 'sv_SE.UTF-8'
LC_CTYPE: 'sv_SE.UTF-8'
volumes:
- ./data/postgresql:/var/lib/postgresql/data
networks:
- php
столкнулся с другой проблемой
bash: warning: setlocale: LC_ALL: cannot change locale (sv_SE.UTF-8)
Generating locales (this might take a while)...
Generation complete.
и при каждом обновлении изображения (State Restarting) ..
при удалении commnad
изображение вверх без ошибок, но когда Я ввел в образ я столкнулся с тем,
root@d09bb8a58b90:/app# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=sv_SE.UTF-8
LANGUAGE=sv_SE.UTF-8
LC_CTYPE="sv_SE.UTF-8"
LC_NUMERIC="sv_SE.UTF-8"
LC_TIME="sv_SE.UTF-8"
LC_COLLATE="sv_SE.UTF-8"
LC_MONETARY="sv_SE.UTF-8"
LC_MESSAGES="sv_SE.UTF-8"
LC_PAPER="sv_SE.UTF-8"
LC_NAME="sv_SE.UTF-8"
LC_ADDRESS="sv_SE.UTF-8"
LC_TELEPHONE="sv_SE.UTF-8"
LC_MEASUREMENT="sv_SE.UTF-8"
LC_IDENTIFICATION="sv_SE.UTF-8"
LC_ALL=sv_SE.UTF-8
root@d09bb8a58b90:/app# psql --username=minimoj
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "sv_SE.UTF-8",
LC_ALL = "sv_SE.UTF-8",
LC_COLLATE = "sv_SE.UTF-8",
LC_CTYPE = "sv_SE.UTF-8",
LANG = "sv_SE.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (sv_SE.UTF-8)
psql (9.6.17)
Type "help" for help.
, как изменить сопоставление для существующего столбца? как изменить сопоставление для существующей таблицы? Как преобразовать существующие данные в новое сопоставление, потому что данные были сохранены с en_US.UTF-8?