通过psql运行SQL脚本会产生PgAdmin中不会出现的语法错误

Pet*_*ter 5 postgresql byte-order-mark syntax-error

我有以下脚本来创建一个表:

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

它在PgAdmin的查询工具中运行良好.但是当我尝试使用psql从命令行运行它时:

psql -U postgres -d dbname -f 00101-CreateStateTable.sql
Run Code Online (Sandbox Code Playgroud)

我收到语法错误,如下所示.

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
Run Code Online (Sandbox Code Playgroud)

为什么我使用psql而不是pgAdmin会出现语法错误?

Mat*_*ood 11

通过十六进制转储程序运行您的文件00101-CreateStateTable.sql.我敢打赌你在文件的开头有一个UTF-16标记(在" - "注释字符之前).