Beego 命令行自动建表

GO基础语法之后beego的自动建表

前提

.数据库已经注册 orm.RegisterDataBase
.模型已注册 orm.registerModel

在main.go中调用RunCommand命令

.beego.Run() 命令前调用 orm.RunCommand()

cmd中执行命令:

第一种方式:通过buildmain.go,每次修改模型都要build

go build main.go 编译main.go文件
main orm 置行orm命令,查看orm的命令参数、

第二种方式:直接使用main.go

或者 直接go run main.go orm 执行orm命令

自动建表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>go run main.go orm
orm command usage:
syncdb - auto create tables
sqlall - print sql of create tables
help - print this help
>go run main.go orm syncdb -h (查看帮助)
Usage of orm command: syncdb:
-db string
DataBase alias name (default "default")
-force
drop tables before create
-v verbose info
>go run main.go orm syncdb
table `article` already exists, skip
create table `user`
>go run main.go orm syncdb -force
drop table `article`
drop table `user`
create table `article`
create table `user`

syncdb参数:
-db: 默认使用别名default
-force 删除表后再创建,只是给定这个参数就删除表后再创建,建议不使用
默认是先删除后创建
force=false 如果存在就跳过,不删除存在的表
-v 查看执行的sql语句

打印加标sql:只看建表语句,不自动建表

用于建表前,
go run main.go orm sqlall
默认使用default库
后面加 -h 查看帮助

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>go run main.go orm sqlall
-- --------------------------------------------------
-- Table Structure for `beego_project/models.Article`
-- --------------------------------------------------
CREATE TABLE IF NOT EXISTS `article` (
`id` integer NOT NULL PRIMARY KEY,
`name` varchar(255) NOT NULL DEFAULT '' ,
`author` varchar(255) NOT NULL DEFAULT '' ,
`content` varchar(255) NOT NULL DEFAULT ''
) ENGINE=InnoDB;
-- --------------------------------------------------
-- Table Structure for `beego_project/models.User`
-- --------------------------------------------------
CREATE TABLE IF NOT EXISTS `user` (
`id` integer NOT NULL PRIMARY KEY,
`name` varchar(255) NOT NULL DEFAULT '' ,
`age` integer NOT NULL DEFAULT 0
) ENGINE=InnoDB;

在程序中调用直接建表(不建议使用)

1
2
3
4
5
6
7
8
9
10
11
12
13
name := "default"
//drop table 后建表
force := true
//打印执行过程
verbose := true
// 遇到错误立即返回
err := orm.RunSyncdb(name,force,verbose)
if err != nil {
fmt.println(err)
}