5

テーブルを作成するための次のスクリプトがあります。

-- 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

pgAdminではなくpsqlを使用して構文エラーが発生するのはなぜですか?

4

4 に答える 4

11

ファイル00101-CreateStateTable.sqlを16進ダンパーで実行します。ファイルの先頭(「-」コメント文字の前)にUTF-16マーカーがあるはずです。

于 2010-03-30T19:38:16.590 に答える
3

UbuntuでBOMシーケンスを削除するには、bomstrip、bomstrip-filesを使用できます

于 2010-07-22T11:43:01.420 に答える
0

どのバージョンを使用していますか?EXISTSにバージョン8.2が付属している場合は、psqlを使用するときにバージョン8.1以前に接続している可能性があります。

于 2010-03-30T19:06:46.107 に答える
0

君たちありがとう。私はこの問題に数週間苦労しています。PSQLを使用してSQLスクリプトを実行できませんでした。OSに問題があると思っていましたが、テキストファイルのBOMの問題であることがわかりました。Ubuntuにbomstripパケットをインストールしたところ、すべてのSQLスクリプトが再び機能するようになりました。

于 2011-10-25T18:51:06.310 に答える