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

发布于 2024-08-27 11:49:10 字数 761 浏览 12 评论 0原文

我有以下脚本来创建表:

-- 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 则不会?

I have the following script to create a table:

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

It runs fine in the query tool of PgAdmin. But when I try to run it from the command line using psql:

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

I get a syntax error as shown below.

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

Why do I get a syntax error using psql and not with pgAdmin?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

携君以终年 2024-09-03 11:49:10

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

Run your file 00101-CreateStateTable.sql through a hex dumper. I'll bet you have a UTF-16 marker at the beginning of the file (before the "--" comment characters).

秋凉 2024-09-03 11:49:10

要在 Ubuntu 上删除 BOM 序列,您可以使用 bomstrip、bomstrip-files

To remove BOM sequence on Ubuntu you can use bomstrip, bomstrip-files

千纸鹤 2024-09-03 11:49:10

您使用什么版本? IF EXISTS 随版本 8.2 一起提供,也许您在使用 psql 时连接的是 8.1 或更早版本。

What version(-s) do you use? IF EXISTS came with version 8.2, maybe you're connection with version 8.1 or older when you use psql.

悲歌长辞 2024-09-03 11:49:10

谢谢你们。我已经为这个问题苦苦挣扎了几个星期。我无法使用 PSQL 运行 SQL 脚本。我以为我的操作系统有一些问题,现在我知道这是我的文本文件中的 BOM 问题。我在 Ubuntu 中安装了 bomstrip 数据包,现在我所有的 SQL 脚本都再次运行了。

Thank you guys. I have been struggling with this issue for a few weeks. I could not run my SQL scripts using PSQL. I thought I have some issues with my OS, now I know it is the BOM issue in my text file. I installed bomstrip packet in Ubuntu and now all my SQL scripts are working again.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文