Postgresql 参数问题 $1
Postgresql Parameter Issue $1
我正在努力建立一个数据库,构建一个自定义更新插入,因为 Postgresql 显然还没有。无论如何,我的参数没有很好地发挥作用。
我正在使用马提尼酒。
此代码:
func CreateBook(ren render.Render, r *http.Request, db *sql.DB) {
_, err := db.Query("INSERT INTO books (title, first, last, class) SELECT , , , WHERE NOT EXISTS (SELECT * FROM books WHERE title = )",
r.FormValue("title"),
r.FormValue("first"),
r.FormValue("last"),
r.FormValue("class"))
PanicIf(err)
引发此错误:
pq: inconsistent types deduced for parameter
我相当确定第二个 $1 存在某种类型转换问题,但 none 的合理解决方案似乎是有道理的。
这是一个愚蠢的问题,希望有一个简单的答案,但我在其他地方找不到任何答案。
由于数据库结构未知,因此很难准确判断发生了什么。但是在 sqlfiddle 中尝试这个查询显示如下:
create table books (
id serial,
title varchar
);
PREPARE booksplan AS
INSERT INTO books (title)
SELECT WHERE NOT EXISTS (SELECT * FROM books WHERE title = );
>> ERROR: inconsistent types deduced for parameter
>> Detail: text versus character varying Position: 59
所以我怀疑当第一次使用 $1 时,推导了文本,但推导了第二个 $1 的 varchar(与 title 相比,它是 varchar)。
作为解决方法,您可以尝试
_, err := db.Query(`INSERT INTO books (title, first, last, class)
SELECT CAST( AS VARCHAR), , ,
WHERE NOT EXISTS (SELECT 1 FROM books WHERE title = )`,
我正在努力建立一个数据库,构建一个自定义更新插入,因为 Postgresql 显然还没有。无论如何,我的参数没有很好地发挥作用。
我正在使用马提尼酒。
此代码:
func CreateBook(ren render.Render, r *http.Request, db *sql.DB) {
_, err := db.Query("INSERT INTO books (title, first, last, class) SELECT , , , WHERE NOT EXISTS (SELECT * FROM books WHERE title = )",
r.FormValue("title"),
r.FormValue("first"),
r.FormValue("last"),
r.FormValue("class"))
PanicIf(err)
引发此错误:
pq: inconsistent types deduced for parameter
我相当确定第二个 $1 存在某种类型转换问题,但 none 的合理解决方案似乎是有道理的。
这是一个愚蠢的问题,希望有一个简单的答案,但我在其他地方找不到任何答案。
由于数据库结构未知,因此很难准确判断发生了什么。但是在 sqlfiddle 中尝试这个查询显示如下:
create table books (
id serial,
title varchar
);
PREPARE booksplan AS
INSERT INTO books (title)
SELECT WHERE NOT EXISTS (SELECT * FROM books WHERE title = );
>> ERROR: inconsistent types deduced for parameter
>> Detail: text versus character varying Position: 59
所以我怀疑当第一次使用 $1 时,推导了文本,但推导了第二个 $1 的 varchar(与 title 相比,它是 varchar)。
作为解决方法,您可以尝试
_, err := db.Query(`INSERT INTO books (title, first, last, class)
SELECT CAST( AS VARCHAR), , ,
WHERE NOT EXISTS (SELECT 1 FROM books WHERE title = )`,