У меня возникла проблема, когда я использовал графический интерфейс pgAdmin4 для создания таблицы SQL, и я хочу использовать сгенерированный скрипт CREATE TABLE
для создания этой же таблицы в другой базе данных.
Когда я запускаю сценарий CREATE TABLE
, сгенерированный pgAdmin4 в моей новой базе данных, я получаю следующую ошибку:
ОШИБКА: отношение "schema.TableName_Id_seq" не существует
Итак, похоже, проблема связана с моим автоматически увеличивающимся столбцом идентификатора, который я создал как тип SERIAL
.
Сценарий CREATE TABLE
, предоставленный pgAdmin4:
-- Table: myschema.TableName
-- DROP TABLE myschema."TableName";
CREATE TABLE myschema."TableName"
(
"Id" integer NOT NULL DEFAULT nextval('myschema."TableName_Id_seq"'::regclass),
/* Other columns here */
CONSTRAINT "TableName_pkey" PRIMARY KEY ("Id")
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;
ALTER TABLE myschema."TableName"
OWNER to JoshuaSchlichting;
Почему скрипт CREATE TABLE
нельзя использовать в другой базе данных? Отношение "schema.TableName_Id_seq"
не существовало в исходной базе данных до создания этой таблицы. Что происходит, что отличается?
CREATE TABLE
. РЕДАКТИРОВАТЬ: я только что создал новую таблицу и проверил ее с помощью pgAdmin4. Разумеется, если вы используете заглавные буквы при создании таблицы, pgAdmin4 неявно заключает ее в двойные кавычки при создании этой таблицы. Хорошо знать! - person Joshua Schlichting   schedule 04.05.2020