go-admin icon indicating copy to clipboard operation
go-admin copied to clipboard

PostgreSQL支持问题

Open infnan opened this issue 3 years ago • 1 comments

使用PostgreSQL不能正常启动和迁移,会报各种SQL错误,经过测试,需要进行以下调整(参见#554,问题未解决):

  1. 修改 https://github.com/go-admin-team/go-admin-core 项目的 tools/search/query.go ,判断数据库类型,如果为PostgreSQL,要把代码中的单撇号`去掉。
  2. 修改 db.sql ,将所有单撇号删除。另外需要将前面两行SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; 和后面的 SET FOREIGN_KEY_CHECKS = 1; 屏蔽掉。
  3. 修改go-admin的以下文件,把部分写成int的都改成string:
    • app/admin/apis/sys_config.go:201:加引号,改成req.IsFrontend = "1"
    • app/admin/models/sys_config.go:13行的IsFrontend类型改成string
    • app/admin/service/dto/sys_config.go:15行、32行、46行的int改成string
    • cmd/migrate/migration/init.go:49行的"version = ?", v的v转成字符串strconv.Itoa(v)
    • common/middleware/handler/login.go:17行的status = 2加引号status = '2'
  4. 修改数据类型:
    • cmd/migrate/migration/models/sys_user.go,查找bigint(20),全部换成bigint
    • cmd/migrate/migration/models/sys_menu.go:bool替换成int
    • cmd/migrate/migration/models/sys_role.go:bool替换成int
    • cmd/migrate/migration/models/sys_tables.go:bool替换成int
    • cmd/migrate/migration/models/sys_columns.go:bool替换成int
    • app/admin/service/dto/sys_menu.go:bool替换成int
    • app/admin/service/dto/sys_role.go:bool替换成int
    • app/admin/models/sys_menu.go:bool替换成int
    • app/admin/models/sys_role.go:bool替换成int
    • app/other/apis/tools/gen.go:NoCache = false全部换成等于0
  5. config/pg.sql缺少创建序列的语句,需要补上:
create sequence sys_role_role_id_seq;
create sequence sys_user_user_id_seq;
create sequence sys_post_post_id_seq;
create sequence sys_menu_menu_id_seq;
create sequence sys_dict_type_dict_id_seq;
create sequence sys_dict_data_dict_code_seq;
create sequence sys_dept_dept_id_seq;
create sequence sys_config_config_id_seq;
create sequence sys_job_id_seq;

顺便需要纠正一下序列起始值:

select setval('sys_menu_menu_id_seq',542);
select setval('sys_dict_data_dict_code_seq',33);
select setval('sys_config_config_id_seq',5);
  1. 前端配合修改:
  • src/views/admin/sys-config/index.vue:删除this.form.isFrontend = parseInt(this.form.isFrontend)

infnan avatar Jan 20 '22 02:01 infnan

Thanks for sharing. I'd like to share a copy of my change based on latest master branch. It reference a private change for go-admin-core and gorm-adapter. https://github.com/guo1017138/go-admin
With the change, it can migrate, server with postgres with schema supported. I've tested the code against mysql and postgres.

It works for GET options. The advanced POST function such like user add, delete etc. may fail(don't have time to test). however, you can fix the code yourself once there has more issues.

There is no change for go-admin-ui and seems working without issue.

guo1017138 avatar Mar 17 '22 03:03 guo1017138