【发布时间】:2016-09-30 08:12:11
【问题描述】:
我正在尝试使用 postgres 驱动程序 (lib/pq) 删除数据库,方法是:
db.Exec("DROP DATABASE dbName;")
但我想根据收到的错误是奇怪的东西还是“数据库不存在”错误来做一个不同的条件。
是否有一个常量变量或可以用来检查返回的错误是否是“数据库不存在”错误消息,或者我必须自己手动解析错误字符串?
我试图查看文档,但找不到“数据库不存在”的任何内容。但是我确实找到了this list。
也许它适合其他一些错误代码?此外,我不太确定通过 Postgres 驱动程序获取和比较错误代码的语义正确方法。我想我应该这样做:
if err.ErrorCode != "xxx"
【问题讨论】:
-
有什么理由不想在尝试删除数据库之前检查它是否存在?
-
这也是一个可以接受的解决方案,我不知道我能做到这一点 :-) 有相关查询吗?
-
当然可以。查看 pg_database 对象。
SELECT TRUE AS result FROM pg_database WHERE datname='abc'; -
另外,如果你想避免整个问题,只需:
DROP DATABASE IF EXISTS dbName; -
太棒了,谢谢,太完美了。
标签: database postgresql go