PostgreSQL:关系不存在错误

也许这个错误可能是由 SCHEMA 的问题引起的,我试图修复它,但是我完全糊涂了。

下面是详细描述。

有一个单独的文件运行以下命令:

CREATE DATABASE weather;
CREATE SCHEMA public;
CREATE SCHEMA schema1;

SET search_path = schema1, public;

CREATE TABLE "Sities" (
                    Id SERIAL PRIMARY KEY,
                    name TEXT,
                    country TEXT,
                    weather_id_api int);

CREATE TABLE "Forecasts" (
                    Id SERIAL PRIMARY KEY,
                    city_id int,
                    time DATE,
                    temp INT,
                    humidity INT,
                    pressure INT);

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO postgres;
GRANT usage ON SCHEMA public TO postgres;

检查每个命令的执行是否有错误,这些命令执行起来没有问题。

在另一个文件中执行这样的命令:

SET search_path = schema1, public;
INSERT INTO "Sities" (name, country, weather_id_api)
            SELECT 'Orenburg', "RU", 234234
            WHERE NOT EXISTS (SELECT name FROM "Sities" WHERE name="Orenburg");

最后一个命令导致一个错误:

panic: pq: Relation "Sities" does not exist

goroutine 1 [running]: main.PostToDatabase(0x11731ee0) D:/Go/src/WeatherSoket/main.go:135 +0x40f main.Update() D:/Go/src/WeatherSoket/main.go:150 +0x52 main.main() D:/Go/src/WeatherSoket/main.go:165 +0xbe exit status 2

This works - try to check quotes " and apostrophes ':

SET search_path = schema1, public;

INSERT INTO "Sities" (name, country, weather_id_api)
            SELECT 'Orenburg', 'RU', 234234
            WHERE NOT EXISTS (SELECT name FROM "Sities" WHERE name='Orenburg');

http://sqlfiddle.com/#!17/5abd9/4