我正在尝试在新系统上设置新的数据库,但出现此错误:
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedObject) collation "NOCASE" for encoding "UTF8" does not exist
LINE 4: email VARCHAR(120) COLLATE "NOCASE" NOT NULL,
^
[SQL:
CREATE TABLE users (
id SERIAL NOT NULL,
email VARCHAR(120) COLLATE "NOCASE" NOT NULL,
password VARCHAR(128) NOT NULL
)
]
我没有更改任何内容,但这适用于两台不同的计算机,其中一台运行 Postgresql 10。我使用 SqlAlchemy 升级运行此查询只是为了提供信息。
我用这个创建了数据库:
CREATE DATABASE db
WITH
OWNER = postgres
ENCODING = 'UTF8'
LC_COLLATE = 'tr_TR.utf8'
LC_CTYPE = 'tr_TR.utf8'
TABLESPACE = pg_default
CONNECTION LIMIT = -1;
您可以使用“CITEXT”代替“NOCASE”
因此,在您的情况下,使用“CITEXT”代替“NOCASE_UTF8”,并在此之前添加一行 - CREATE EXTENSION IF NOT EXISTS citext;
与 Postgres 中一样,您通常会使用不同的排序规则来实现不区分大小写的比较。
Postgres 提供了 citext 数据类型用于不区分大小写的文本比较,您可以直接将其用于您的列。以下是如何使用 citext 创建表格