【发布时间】:2019-07-06 14:33:26
【问题描述】:
我正在尝试做一个简单的事情,检查是否有表,如果没有则在数据库中创建该表。
这是我使用的逻辑。
test := "June_2019"
sql_query := `select * from ` + test + `;`
read_err := db.QueryRow(sql_query, 5)
error_returned := read_err.Scan(read_err)
defer db.Close()
if error_returned == nil {
fmt.Println("table is there")
} else {
fmt.Println("table not there")
}
在我的数据库中,我有 June_2019 表。但是这段代码仍然返回我not nil 值。我使用了db.QueryRow(sql_query, 5) 5,因为我的表中有五个列。
我在这里缺少什么?我还在学习golang。
提前致谢。
【问题讨论】:
-
离题;考虑一下从应用程序代码创建表是否合乎逻辑,因为您的 MySQL 用户必须更强大,拥有 CREATE 和可能 DROP 权限,这可能是不安全的。还看到元数据(年份)用作表分隔符,为什么要这样做?理想情况下,您应该有一个表,其中有一个年份列
-
.. 因为 MySQL 可以在一个表中处理数百万甚至数十亿条记录,当涉及索引时,如果有疑问,部署 Partitioning 或多或少与您相同但在各方面都做得更好..
-
@RaymondNijland 是的。但在这里我这样做是为了学习
golang并满足一个简单的需求。 -
SQL 是一种语言。
go是一种语言。在尝试解决问题时,最好使用最适合手头任务的语言。检查表是否存在应该留给 SQL 方面,例如CREATE TABLE IF NOT EXISTS -
查看此答案以获取table existence 的 SQL 查询。
标签: mysql