繁体   English   中英

Npgsql 我得到:42P01:关系“sometable”不存在

[英]Npgsql i get: 42P01: relation "sometable" does not exist

我正在尝试通过 Npgsql 运行此查询,当我直接在服务器上运行它时,此查询运行良好,因为我得到:查询成功返回,15 毫秒内没有结果。但是,当我使用 Npgsql 时,我得到:42P01:关系“sometable “ 不存在

我知道错误出现在 INSERT 语句中,我错过了什么吗?

连接字符串:Host=192.168.137.47;Port=5432;UserId=postgres;Password=test;Database=pg_database;

        var m_createdb_cmd = new NpgsqlCommand();
        m_createdb_cmd.Connection = _connPg;
        m_createdb_cmd.CommandText = psSQL;
        _connPg.Open();
        m_createdb_cmd.ExecuteNonQuery();
        _connPg.Close();

查询

BEGIN;
CREATE TABLE "sometable" (
"test" varchar(254));
INSERT INTO "sometable" ("test") VALUES ('Hello World');
COMMIT;

日志

2015-10-01 07:08:46 EDT 错误:关系“sometable”在字符 13 处不存在 2015-10-01 07:08:46 EDT 声明:插入“sometable”(“test”)值('你好世界')

ps:我也看过PostgreSQL 错误:42P01:关系“[表]”不存在没有帮助

这是由于 Npgsql 3.x 中引入的一个已知限制 - 当在一个命令中发送多个 SQL 语句时,后面的语句不能再依赖于早期语句中创建的实体。 例如,您不能创建一个表,然后在同一命令中将其插入。 解决方法是简单地将表创建和插入拆分为两个命令(注意这与事务无关)。

跟踪此问题的问题是https://github.com/npgsql/npgsql/issues/641

创建表。 提交该事务。 然后在一个单独的事务中,插入数据。

我在 docker 上运行数据库时遇到了类似的问题,在本地运行良好。

解决方案是在类上方添加[Table("MissingTableName")]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM