Ejecución de secuencias de comandos SQL a través psql da errores de sintaxis que no se producen en PgAdmin
-
23-09-2019 - |
Pregunta
Tengo la siguiente secuencia de comandos para crear una tabla:
-- Create State table.
DROP TABLE IF EXISTS "State" CASCADE;
CREATE TABLE "State" (
StateID SERIAL PRIMARY KEY NOT NULL,
StateName VARCHAR(50)
);
Funciona muy bien en la herramienta de consulta de PgAdmin. Pero cuando intento ejecutarlo desde la línea de comandos usando psql:
psql -U postgres -d dbname -f 00101-CreateStateTable.sql
Me sale un error de sintaxis que se muestra a continuación.
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
¿Por qué recibo un error de sintaxis usando psql y no con pgAdmin?
Solución
Ejecutar el archivo de 00101-CreateStateTable.sql a través de un dumper hexagonal. Apuesto a que tiene un marcador UTF-16 en el principio del archivo (antes de los "-" caracteres de comentario).
Otros consejos
Para eliminar la secuencia de lista de materiales en Ubuntu puede utilizar bomstrip, bomstrip-archivos
¿Qué versión (-s) se utilizan? Si existe venía con la versión 8.2, tal vez usted es la conexión con la versión 8.1 o mayor cuando se utiliza psql.
Gracias chicos. He estado luchando con este problema durante unas pocas semanas. No podía correr mis scripts SQL utilizando PSQL. Pensé que tengo algunos problemas con mi sistema operativo, ahora sé que es el tema de lista de materiales en mi archivo de texto. He instalado bomstrip de paquetes en Ubuntu y ahora todos mis scripts SQL están trabajando de nuevo.