尝试使用ADO.NET中的Npgsql执行以下命令时遇到问题:
DO
$do$
BEGIN
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'public' AND TABLE_NAME = 'event_journal') THEN
CREATE TABLE public.event_journal (
id BIGSERIAL PRIMARY KEY,
persistence_id VARCHAR(255) NOT NULL,
sequence_nr BIGINT NOT NULL,
is_deleted BOOLEAN NOT NULL,
created_at BIGINT NOT NULL,
manifest VARCHAR(500) NOT NULL,
payload BYTEA NOT NULL,
CONSTRAINT event_journal_uq UNIQUE (persistence_id, sequence_nr)
);
CREATE INDEX event_journal_sequence_nr_idx ON public.event_journal(sequence_nr);
CREATE INDEX event_journal_created_at_idx ON public.event_journal(created_at);
END IF;
END
$do$
这是标准语法错误 42601:语法错误在或附近(,位置指向create table语句的第一行。对我来说很奇怪,直接针对Postgres数据库运行SQL执行正确没有任何错误。
Npgsql版本: 3.0.7 PostgreSQL版本: 9.4.5,64位 .NET版本: 4.5(Windows 8.1 CLR)