Golang Go语言中 有大佬用Go操作doris吗?问个入门问题

发布于 1周前 作者 songsunli 来自 Go语言

使用 xorm 和 gorm 操作 doris2.0 都不成功,看文档没有说支持 doris ,但是 doris 本身应该高度兼容 mysql 的吧,这些 orm 框架这么严格?还是代码上有问题?

xorm code:

func SelectAd() {
	engine := _init_db("10.22.xx", "9030", "abc")
ad := new(FlowAdUrlStat)
if _, err := engine.Where("opt_YYYYMMDD=?", 20240626).Get(ad); err != nil {
	log.Fatal(err)
}

fmt.Println(ad)

}

报错: 2024/06/27 10:55:37 Error 1105 (HY000): errCode = 2, detailMessage = Only support prepare SelectStmt point query now

gorm code:

	var ad FlowAdUrlStat
stmt := db.Session(&gorm.Session{DryRun: true}).Where("opt_YYYYMMDD = ?", 20240626).Take(&ad).Statement
fmt.Println(stmt.SQL.String()) 
fmt.Println(stmt.Vars)         

if err := db.Where("opt_YYYYMMDD = ?", 20240626).Take(&ad).Error; err != nil {
	log.Fatal(err)
}

fmt.Println(ad)

报错:

output:

Type ‘dlv help’ for list of commands. SELECT * FROM flow_ad_url_stat WHERE opt_YYYYMMDD = ? LIMIT ? [20240626 1] 2024/06/26 18:07:03 Error 1105 (HY000): errCode = 2, detailMessage = Syntax error in line 1: …RE opt_YYYYMMDD = ? LIMIT ? ^ Encountered: ? Expected

2024/06/26 18:07:03 D:/goproject/cloudsvc/dbutils/mysqlutil.go:63 Error 1105 (HY000): errCode = 2, detailMessage = Syntax error in line 1: …RE opt_YYYYMMDD = ? LIMIT ? ^ Encountered: ? Expected

[58.356ms] [rows:0] SELECT * FROM flow_ad_url_stat WHERE opt_YYYYMMDD = 20240626 LIMIT 1 Process 48512 has exited with status 1 Detaching


Golang Go语言中 有大佬用Go操作doris吗?问个入门问题

更多关于Golang Go语言中 有大佬用Go操作doris吗?问个入门问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

蹲一个,我也很想知道

更多关于Golang Go语言中 有大佬用Go操作doris吗?问个入门问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


报错原因不是都写了吗?
OLAP 数据库不用 prepare 模式也能理解吧.

试了 gorm 的 db.Raw 也是报错
<br>if err := db.Raw("select * from flow_ad_url_stat limit 1").Scan(&amp;ad).Error; err != nil {<br> log.Fatal(err)<br> }<br><br><br>2024/06/27 15:29:37 Error 1105 (HY000): errCode = 2, detailMessage = Only support prepare SelectStmt point query now<br><br>2024/06/27 15:29:37 D:/goproject/cloudsvc/dbutils/mysqlutil.go:59 Error 1105 (HY000): errCode = 2, detailMessage = Only support prepare SelectStmt point query now<br>[63.082ms] [rows:-] select * from flow_ad_url_stat limit 1<br>

倒是 xorm 的可用,但是不能装进 struct ,感觉有些别扭。

result, err := engine.QueryString(“select * from flow_ad_url_stat limit 1”)

亲测,doris 从 1.x 升级到 2.0.10 ,gorm 使用正常

当然有,使用Go语言操作Apache Doris是完全可行的。Doris高度兼容MySQL协议,因此你可以使用Go语言中连接MySQL的库来操作Doris。以下是一个简单的入门指南:

  1. 安装驱动:首先,你需要安装Go连接MySQL的驱动,可以使用以下命令:
go get github.com/go-sql-driver/mysql
  1. 导入依赖库:在你的Go代码中,导入必要的依赖库:
import (
	"database/sql"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
)
  1. 连接Doris数据库:配置数据库连接参数,并使用sql.Open函数建立连接。

  2. 执行SQL操作:连接成功后,你可以使用db.Querydb.Exec等方法执行SQL查询和插入操作。

  3. 处理结果:对于查询操作,你需要遍历结果集并处理每一行的数据。

  4. 关闭连接:操作完成后,不要忘记关闭数据库连接。

作为一个IT领域的专家,我建议你查阅Doris和Go语言的官方文档,以及相关的开源项目和社区资源,以获取更多详细的信息和示例代码。这将有助于你更深入地了解如何使用Go语言操作Doris数据库。

回到顶部