Rett-oo
@Rett-oo

Как убрать ограничения чтения названия столбца в PostgreSQL?

При попытке создать таблицу со следующими столбцами('Доступно_на_складе_СЦ_ТОЛЬЯТТИ_МАГИСТРАЛЬНАЯ__шт', 'Доступно_на_складе_СЦ_ТОЛЬЯТТИ_МАГИСТРАЛЬНАЯ_Возвраты__шт') выходит ошибка:

psycopg2.errors.DuplicateColumn: ОШИБКА:  столбец "Доступно_на_складе_СЦ_ТОЛЬЯТТИ_МАГ" указан неоднократно


Почему PostgreSQL не читает строку с названием столбца полностью? Есть ли способ явно указать сколько символов необходимо сопоставить? Поскольку "Доступно_на_складе" необходимый элемент вариант убрать его не подходит

def create_table(self, name: str, pkey, id=False):
        
        col_info = self.concatenate_string()
        with self.connection.cursor() as cursor:
            cursor.execute(
                f"""CREATE TABLE IF NOT EXISTS {name} (
                    {"id serial, " if id==True else ""}
                    {str(" ".join(col_info))[:-1]}
                    );"""
  • Вопрос задан
  • 304 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
https://www.postgresql.org/docs/7.0/syntax525.htm
The system uses no more than NAMEDATALEN-1 characters of a name; longer names can be written in queries, but they will be truncated. By default, NAMEDATALEN is 32 so the maximum name length is 31 (but at the time the system is built, NAMEDATALEN can be changed in src/include/postgres_ext.h).


Только компилять свою версию постгре с увеличенной константой NAMEDATALEN.
Ну или исправить кхм, странную архитектуру твоей программы, которой нужны длинные рускоязычные имена столбцов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы