首页 > 解决方案 > 从 sql 文件加载存储过程

问题描述

我有一个包含存储过程的 mysql test.sql 文件。在连接到 go 服务器中的数据库后加载这个 sql 文件,我使用了 Exec 命令。但是我没有得到我想要的结果。我接受错误代码

1064 您的 SQL 语法有错误;检查正确的手册...

在 go 中连接数据库后,如何从 sql 文件加载存储过程。

//转到代码部分:

sqlProc, err := ioutil.ReadFile("E:/Qlass/goserv/src/cevir/test.sql")
// handle error

_, err = MAPP.DB.Db.Exec(string(sqlProc[:]))
// handle error

// test.sql 的内容

drop procedure if exists Test;
delimiter ;;
create procedure Test()
begin
    truncate table _prlog;
end ;;
delimiter ;

问题是由分隔符命令引起的。我删除了那些行。问题解决了。更正后的 sql 文件。

drop procedure if exists Test;
create procedure Test()
begin
    truncate table _prlog;
end ;

标签: mysqlgo

解决方案


我会期待更多这样的事情:

DB, err = sql.Open("mysql", MAPP.CF.Mysql)
if err != nil {
    // handle error
}
data, err := ioutil.ReadFile(`E:/Qlass/goserv/src/modul/modul_sp.sql`)
if err != nil {
    // handle error
}
sqlProc := string(data)
_, err := DB.Exec(sqlProc)
if err != nil {
    // handle error
}

推荐阅读