Azure / postgresql

Deploy to an Azure PostgreSQL database using PLSQL scripts.
MIT License
23 stars 15 forks source link

"CREATE TABLE IF NOT EXISTS" results in a false-positive error if table already exists #52

Open pk-ot opened 9 months ago

pk-ot commented 9 months ago

Take a script like the auto-generated migration history table creation by Entity Framework:

CREATE TABLE IF NOT EXISTS "__EFMigrationsHistory" (
    "MigrationId" character varying(150) NOT NULL,
    "ProductVersion" character varying(32) NOT NULL,
    CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY ("MigrationId")
);

This results in a false error if the table actually already exists:

psql:/home/runner/work/somethingsomething.sql:5: NOTICE:  relation "__EFMigrationsHistory" already exists, skipping
[...]
Error: Error occurred while running action:
Error: error in file: /home/runner/work/somethingsomething.sql
psql:/home/runner/work/somethingsomething.sql:5: NOTICE:  relation "__EFMigrationsHistory" already exists, skipping

Which subsequently and wrongly fails the build.

pk-ot commented 9 months ago

A temporary workaround is to raise the client message min level to warnings, by adding an option in your connection string:

options='--client_min_messages=WARNING'

This prevents the false error but is not ideal because you'll also not have notices that might be interesting in the log.