Запущение скрипта SQL через psql дает синтаксические ошибки, которые не происходят в PgAdmin

У меня есть следующий сценарий для составления таблицы:

-- Create State table.
DROP TABLE IF EXISTS "State" CASCADE;
CREATE TABLE "State" (
 StateID SERIAL PRIMARY KEY NOT NULL,
 StateName VARCHAR(50)
);

Это хорошо работает в инструментальном средстве формирования запросов PgAdmin. Но когда я пытаюсь выполнить его из командной строки с помощью psql:

psql -U postgres -d dbname -f 00101-CreateStateTable.sql

Я получаю синтаксическую ошибку как показано ниже.

2: ERROR:  syntax error at or near ""
LINE 1: 
        ^
psql:00101-CreateStateTable.sql:6: NOTICE:  CREATE TABLE will create implicit sequence "State_stateid_seq" for serial column "State.stateid"
psql:00101-CreateStateTable.sql:6: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "State_pkey" for table "State"
CREATE TABLE

Почему я получаю синтаксическую ошибку с помощью psql а не с pgAdmin?

5
задан Erwin Brandstetter 26 May 2018 в 14:33
поделиться

2 ответа

Запустите файл 00101 -CreateStateTable.sql через шестнадцатеричный дампер. Готов поспорить, у вас есть маркер UTF-16 в начале файла (перед символами комментария "-").

11
ответ дан 18 December 2019 в 13:12
поделиться

Какую версию (-и) вы используете? ЕСЛИ EXISTS поставляется с версией 8.2, возможно, вы используете psql с версией 8.1 или более ранней.

0
ответ дан 18 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

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