Npgsql 我得到:42P01:关系 "sometable" 不存在
Npgsql i get: 42P01: relation "sometable" does not exist
我正在尝试通过 Npgsql 运行 这个查询,当我 运行 它直接在服务器上时这个查询工作得很好,因为我得到:查询成功返回,但在 15 [=41] 中没有结果=],当我使用 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") 值 ('Hello World')
p.s.:我也看了PostgreSQL ERROR: 42P01: relation "[Table]" does not exist 没用
创建table。提交该交易。
然后在一个单独的事务中,插入数据。
这是由于 Npgsql 3.x 中引入的已知限制 - 当在一个命令中发送多个 SQL 语句时,后面的语句不再依赖于前面语句中创建的实体。例如,您不能创建一个 table 然后在同一个命令中插入它。解决方法是简单地将 table 创建和插入分成两个命令(注意这与事务无关)。
我正在尝试通过 Npgsql 运行 这个查询,当我 运行 它直接在服务器上时这个查询工作得很好,因为我得到:查询成功返回,但在 15 [=41] 中没有结果=],当我使用 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") 值 ('Hello World')
p.s.:我也看了PostgreSQL ERROR: 42P01: relation "[Table]" does not exist 没用
创建table。提交该交易。 然后在一个单独的事务中,插入数据。
这是由于 Npgsql 3.x 中引入的已知限制 - 当在一个命令中发送多个 SQL 语句时,后面的语句不再依赖于前面语句中创建的实体。例如,您不能创建一个 table 然后在同一个命令中插入它。解决方法是简单地将 table 创建和插入分成两个命令(注意这与事务无关)。