[wiki]用postgreSQL開始的教程
這個教程很好,但主要是針對mysql
我想分享一下postgreSQL的坑以及自己遇到的一些問題
- 作業系統win10
- golang v1.13
golang版本
我一開始是用golang 1.16,但後來遇到multiple-value uuid.NewV4() in single-value context
後來改用golang 1.13就沒問題了,建議大家用和GoAdminGroup/go-admin/go.mod用相同的版本
環境變數
首先 GOPROXY在中國有受限,所以文章會寫
GO111MODULE=on
GOPROXY=https://goproxy.cn <-- 在中國就用這個
GOPROXY=https://proxy.golang.org,direct <-- 預設您裝好golang應該是這個,用這個也可以
go install github.com/GoAdminGroup/go-admin/adm
環境變數預設會抓系統變數,如果您不想用系統變數也可以用 go env -w 去改寫
例如:
go env -w GOPROXY=https://goproxy.cn
go env可以查看go所有的環境變數,你也可以把想看的變數丟在後面就會只列出該變數
查看當前GOPROXY的設定
go env GOPROXY
此外go env會有一個檔案紀錄-w的內容,該檔案路徑位置
go env GOENV
goAdmin
在安裝goAdmin之前如果沒有裝gcc會失敗
安裝gcc
如果您是windows可以先去裝choco (跟著裡面的Chocolatey Install即可裝好)
接著用指令
choco install mingw -y
裝完mingw之後,再使用
gcc -v
應該就會看到版本,表示安裝gcc成功了
要查看gcc裝在哪邊可以用gcm去檢查
gcm gcc.exe
建立blog的資料表
postgresql版本
SET search_path = postgres; -- USE DatabaseName;
-- ----------------------------
-- Table structure for blog_article
-- ----------------------------
DROP TABLE IF EXISTS public.blog_article; -- public是schema的名稱,如果您的schema名稱是別的就要改掉
CREATE TABLE public.blog_article ( -- https://www.postgresqltutorial.com/postgresql-create-table/
id SERIAL NOT NULL, -- https://www.postgresqltutorial.com/postgresql-serial/
tag_id SERIAL,
title varchar(100) DEFAULT '',
"desc" varchar(255) DEFAULT '',
content text,
cover_image_url varchar(255) DEFAULT '',
created_on int DEFAULT '0',
created_by varchar(100) DEFAULT '',
modified_on int DEFAULT '0',
modified_by varchar(255) DEFAULT '',
deleted_on int DEFAULT '0',
state smallint DEFAULT '1', -- https://www.postgresqltutorial.com/postgresql-data-types/
PRIMARY KEY (id)
);
-- https://www.postgresql.org/docs/9.1/sql-comment.html
COMMENT ON COLUMN public.blog_article.tag_id IS '標籤ID';
COMMENT ON COLUMN public.blog_article.title IS '文章标题';
COMMENT ON COLUMN public.blog_article.desc IS '简述';
COMMENT ON COLUMN public.blog_article.content IS '内容';
COMMENT ON COLUMN public.blog_article.cover_image_url IS '封面图片地址';
COMMENT ON COLUMN public.blog_article.created_on IS '新建时间';
COMMENT ON COLUMN public.blog_article.created_by IS '创建人';
COMMENT ON COLUMN public.blog_article.modified_on IS '修改时间';
COMMENT ON COLUMN public.blog_article.modified_by IS '修改人';
COMMENT ON COLUMN public.blog_article.deleted_on IS '删除时间';
COMMENT ON TABLE public.blog_article IS '文章管理';
-- ----------------------------
-- Table structure for blog_auth
-- ----------------------------
DROP TABLE IF EXISTS public.blog_auth;
CREATE TABLE public.blog_auth (
id SERIAL NOT NULL,
username varchar(50) DEFAULT '',
password varchar(50) DEFAULT '',
PRIMARY KEY (id)
);
COMMENT ON COLUMN public.blog_auth.username IS '账号';
COMMENT ON COLUMN public.blog_auth.password IS '密码';
INSERT INTO public.blog_auth (id, username, password) VALUES ('1', 'test', 'test123');
-- ----------------------------
-- Table structure for blog_tag
-- ----------------------------
DROP TABLE IF EXISTS public.blog_tag;
CREATE TABLE public.blog_tag (
id SERIAL NOT NULL,
name varchar(100) DEFAULT '',
created_on int DEFAULT '0',
created_by varchar(100) DEFAULT '',
modified_on int DEFAULT '0',
modified_by varchar(100) DEFAULT '',
deleted_on int DEFAULT '0',
state smallint NOT NULL DEFAULT '1',
PRIMARY KEY (id)
);
COMMENT ON COLUMN public.blog_tag.name IS '标签名称';
COMMENT ON COLUMN public.blog_tag.created_on IS '创建时间';
COMMENT ON COLUMN public.blog_tag.created_by IS '创建人';
COMMENT ON COLUMN public.blog_tag.modified_on IS '修改时间';
COMMENT ON COLUMN public.blog_tag.modified_by IS '修改人';
COMMENT ON COLUMN public.blog_tag.deleted_on IS '删除时间';
COMMENT ON COLUMN public.blog_tag.state IS '状态 0为禁用、1为启用';
COMMENT ON TABLE public.blog_tag IS '文章标签管理';
匯入goadmin需要用到的資料表
可以直接在 go-admin/data 找尋適用於您資料庫的sql 在做一些符合您的更改即可
要說的是如果您用的是postgresql,這些指令不能直接在pgAdmin運行,主要是卡在stdin的關係,詳
解法,打開psql的終端機來幫您,詳
登入完之後
最後使用
\i 'c:/path/.../xxx.sql'
即可成功完成建立
⚠ 是用/而不是\,此外用'把路徑包起來,不然可能會遇到permission denied 詳
編寫main.go
package main
import ( // https://golang.org/pkg/
_ "github.com/GoAdminGroup/go-admin/adapter/gin" // 适配器
_ "github.com/GoAdminGroup/go-admin/modules/db/drivers/postgres" // postgres 驅動 // 如果不符合可能會有訊息: panic: sql: unknown driver "postgres" (forgotten import?)
_ "github.com/GoAdminGroup/themes/adminlte" // 引入ui主题,必须引入,不然报错
"github.com/GoAdminGroup/go-admin/engine"
"github.com/GoAdminGroup/go-admin/examples/datamodel"
"github.com/GoAdminGroup/go-admin/modules/config"
"github.com/GoAdminGroup/go-admin/modules/db"
"github.com/GoAdminGroup/go-admin/modules/language"
"github.com/GoAdminGroup/go-admin/template"
"github.com/GoAdminGroup/go-admin/template/chartjs"
"github.com/gin-gonic/gin"
"io/ioutil"
)
func main() {
r := gin.Default()
gin.SetMode(gin.ReleaseMode)
gin.DefaultWriter = ioutil.Discard
eng := engine.Default()
template.AddComp(chartjs.NewChart())
if err := eng.AddConfig(config.Config{
Databases: config.DatabaseList{
"default": { // 改成自己的設定
Host: "127.0.0.1",
Port: "5432",
User: "postgres",
Pwd: "",
Name: "", // database name
MaxIdleCon: 50,
MaxOpenCon: 150,
Driver: db.DriverPostgresql, // db.DriverMysql,
},
},
UrlPrefix: "admin",
IndexUrl: "/",
Debug: true,
Language: language.CN, // 預設可用en, cn, jp, tc,也可參考這些增加您自己的語言
}).
AddGenerators(Generators).
Use(r); err != nil {
panic(err)
}
r.Static("/uploads", "./uploads")
eng.HTML("GET", "/admin", datamodel.GetContent)
_ = r.Run(":9033")
}
我想新增上面的東西到wiki去,我有在Telegram詢問,正等候您(@chenhg5)答覆
@CarsonSlovoka 感谢分享👍👍。不好意思。近期比较忙回复慢。wiki也可以发在论坛 http://discuss.go-admin.com/。后期我们也可以整理进项目文档。
Hi, 洛克人! 可以在論壇新增第三方的登入(With Google, Github,...)的方案嗎? (Configuring Google login for Discourse) 這樣就不用記那麼多帳號了😅
@CarsonSlovaka 应该可以。让我晚些研究研究。👌🏻
@CarsonSlovoka 👌🏻应该可以。我晚些研究研究。