Go SQL 语法错误
Go SQL syntax error
我正在尝试使用 database/sql
在 Postgres table 中插入一行。我 运行ning 的代码看起来像
...
res, err := db.Exec("INSERT INTO image(name) VALUES(?);", fname)
if err != nil {
return err
}
...
fname
是一个字符串。类似于 "image-name.png"
。 image
table 是由语句
创建的
...
_, err := db.Exec("CREATE TABLE image (id SERIAL, name VARCHAR)")
...
在 运行 执行 CREATE TABLE
语句后,我可以跳转到 psql
并手动 运行
INSERT INTO image(name) VALUES('some-random-image.jpg');
将适当的行添加到 image
table。但是,上面的 INSERT
Exec
调用始终错误 pq: syntax error at or near ")"
.
谁能指出我这里做错了什么?
另外,作为后续,有没有什么办法可以在go
中看到语句格式化的结果?我在想 func Preview (template string, args...) string
这样的
Preview("INSERT INTO tbl(col) VALUES(?);", "test")
=> "INSERT INTO tbl(col) VALUES('test');"
您需要在 SQL 中使用 $1、$2... 作为占位符值。占位符字符依赖于数据库,对于 Postgres,它们是 $X
.
我正在尝试使用 database/sql
在 Postgres table 中插入一行。我 运行ning 的代码看起来像
...
res, err := db.Exec("INSERT INTO image(name) VALUES(?);", fname)
if err != nil {
return err
}
...
fname
是一个字符串。类似于 "image-name.png"
。 image
table 是由语句
...
_, err := db.Exec("CREATE TABLE image (id SERIAL, name VARCHAR)")
...
在 运行 执行 CREATE TABLE
语句后,我可以跳转到 psql
并手动 运行
INSERT INTO image(name) VALUES('some-random-image.jpg');
将适当的行添加到 image
table。但是,上面的 INSERT
Exec
调用始终错误 pq: syntax error at or near ")"
.
谁能指出我这里做错了什么?
另外,作为后续,有没有什么办法可以在go
中看到语句格式化的结果?我在想 func Preview (template string, args...) string
这样的
Preview("INSERT INTO tbl(col) VALUES(?);", "test")
=> "INSERT INTO tbl(col) VALUES('test');"
您需要在 SQL 中使用 $1、$2... 作为占位符值。占位符字符依赖于数据库,对于 Postgres,它们是 $X
.