L'esecuzione di script SQL tramite psql dà errori di sintassi che non si verificano in PgAdmin
-
23-09-2019 - |
Domanda
Ho il seguente script per creare una tabella:
-- Create State table.
DROP TABLE IF EXISTS "State" CASCADE;
CREATE TABLE "State" (
StateID SERIAL PRIMARY KEY NOT NULL,
StateName VARCHAR(50)
);
Funziona benissimo nello strumento di query di PgAdmin. Ma quando provo a lanciarlo dalla riga di comando con psql:
psql -U postgres -d dbname -f 00101-CreateStateTable.sql
ottengo un errore di sintassi, come illustrato di seguito.
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
Perché ricevo un errore di sintassi utilizzando psql e non con pgAdmin?
Soluzione
Esegui il file 00101-CreateStateTable.sql attraverso un dumper esadecimale. Scommetto che dispone di un indicatore di UTF-16 all'inizio del file (prima del "-" caratteri di commento).
Altri suggerimenti
Per rimuovere sequenza distinta su Ubuntu è possibile utilizzare bomstrip, bomstrip-files
Quello che (s) versione usi? Se non esiste è venuto con la versione 8.2, forse sei connessione con la versione 8.1 o precedente quando si utilizza psql.
Grazie ragazzi. Ho lottato con questo problema per un paio di settimane. Non potevo correre il mio script SQL utilizzando PSQL. Ho pensato che ho alcuni problemi con il mio sistema operativo, ora so che è la questione distinta nel mio file di testo. Ho installato bomstrip pacchetto in Ubuntu e ora tutti i miei script SQL stiamo lavorando di nuovo.