您的位置:首页 > 健康 > 养生 > golang项目基于gorm框架从postgre数据库迁移到达梦数据库的实践

golang项目基于gorm框架从postgre数据库迁移到达梦数据库的实践

2024/10/6 2:31:42 来源:https://blog.csdn.net/qq_39964887/article/details/140012703  浏览:    关键词:golang项目基于gorm框架从postgre数据库迁移到达梦数据库的实践

一、安装达梦数据库
1、登录达梦数据库官网,下载对应系统版本的安装包。
2、下载地址为:https://www.dameng.com/list_103.html
3、达梦数据库对大小写敏感,在安装初始化数据库实例时建议忽略大小写;具体安装教程可参考以下博客:
https://blog.csdn.net/weixin_64811434/article/details/135396955
【字符串比较大小写敏感】, 默认值为“勾选”,记得取消
初始化数据库记得参考这
二、将Postgre数据库的数据迁移到达梦数据库
通过达梦数据自带的DTS工具迁移,工具存放在 DM 数据库安装目录下 tool 文件夹下面,启动后配置即可,具体操作可以参考以下资料:
https://www.modb.pro/db/587663
三、在项目中引入相关依赖和驱动
1、在网上发现了一个封装好的基于gorm实现的驱动,很好用,参考资料为:
https://toscode.mulanos.cn/iTiki/gorm-dameng/tree/main
四、修改项目中的部分代码
1、参考上述资料修改数据库的连接方式
2、如果项目中引入了casbin中间件,则需要将以下代码:

psqldb, _ := beego.AppConfig.String("psqldb")dataSource := fmt.Sprintf("host=%s port=%d user=%s dbname=%s password=%s sslmode=disable TimeZone=Asia/Shanghai",psqladdr,psqlport,psqluser,psqldb,psqlpass,)a, _ := gormadapter.NewAdapter("postgres", dataSource, true)e, err := casbin.NewEnforcer("initialize/casbin/model.conf", a)

改为如下:

url := dm.BuildUrl(psqluser, psqlpass, psqladdr, psqlport, nil)db, err := gorm.Open(dm.Open(url), &gorm.Config{})if err != nil {panic(err)}a, _ := gormadapter.NewAdapterByDBUseTableName(db, "casbin", "rule")

3、启动项目,登陆访问,如果出现错误,一般是达梦SQL关键字转为大写导致,例如,本项目中改了
原语句:

sql := `select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.query, m.visible, m.status, COALESCE(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_atfrom sys_menu m where m.menu_type in ('M', 'C') and m.status = '0'order by m.parent_id, m.order_num`

修改后的语句为:

sql := `select distinct m.menu_id, m.parent_id, m.menu_name, m.path AS "path", m.component, m.query AS "query", m.visible AS "visible", m.status, COALESCE(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_atfrom sys_menu m where m.menu_type in ('M', 'C') and m.status = '0'order by m.parent_id, m.order_num`

以上就是我迁移到达梦数据库的相关实践和注意事项,欢迎大家指正。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com