psycopg2.errors.DuplicateTable: отношение «имя таблицы» уже существует, но на самом деле его не существует - PullRequest
1 голос
/ 21 апреля 2019

Я получаю эту ошибку psycopg2.errors.DuplicateTable: relation "customers" already exists и я знаю, что это значит.

Проблема в том, что на самом деле не было таблицы с именем «клиенты», когда я запускал программу. Чтобы убедиться в этом, я создал новую базу данных без таблицы или дважды проверил, что такой таблицы не было в существующей базе данных перед запуском кода. Я добавил оператор печати, чтобы проверить, где он сталкивается.

def createTable():
    conn = pg.connect(conn_str)
    cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)

    sql = """
    create table customers
    ( 
       ... 
    )
    """
    print("checking 1111111")                # printed
    cur.execute(sql)

    print("checking 2222222")                # not printed
    conn.commit()

if __name__ == "__main__":
    createTable() 
    app.run(debug=True)

Я могу обойти эту проблему, добавив IF NOT EXISTS к sql, но мне действительно интересно, почему, потому что это часть кода, который раньше работал идеально.

[edit] добавил, что я сделал, чтобы убедиться, что таблица не существует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...