数据库
使用 GoFrame 命令行工具,我们可以快速创建一个新项目。然后我们将为 docker 配置 compose 文件。
创建项目
使用以下命令创建你的项目:
gf init bootcamp -u
或者将 bootcamp
替换为你想创建的项目名称。
ℹ️
GoFrame 项目拥有自己的工程结构,稍后我们会讨论一些有关的方法论。
在 manifest
文件夹下创建一个 database
文件夹,你可以在这里存储和数据库相关代码或设置。
设置
在项目根目录下创建 docker-compose.yaml 文件:
docker-compose.yaml
version: "3"
services:
database:
image: mariadb:10.3
environment:
MYSQL_ROOT_PASSWORD: R0OTp@ssword
MYSQL_DATABASE: bootcamp
MYSQL_USER: dbadmin
MYSQL_PASSWORD: Password
TZ: Asia/Shanghai
healthcheck:
test: mysqladmin ping -u dbadmin -pPassword
volumes:
- ./manifest/database/:/var/database
- database:/var/lib/mysql
command:
mysqld --default-time-zone=Asia/Shanghai --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
ports:
- "3306:3306"
volumes:
database:
ℹ️
在本文件中,我们使用 mariadb 数据库,你也可以将它改为 GoFrame 支持的任意数据库。
由于你正在使用本地数据库,你需要自行完成以下的步骤:
- 创建数据库
bootcamp
- 为项目创建数据库账号
- 用户名:dbadmin
- 密码:Password
- 添加数据库账号权限
⚠️
我们不推荐使用 root 用户
数据结构
由于 GoFrame 是一款企业级的框架,它的设计原则就是不允许开发者在开发时自行修改数据库结构。因此我们需要先确定数据库结构。你也可以找到其他用于管理数据库结构的项目:
为保简洁,我们将使用以下 SQL 创建数据库结构,你可以稍后自行探索其他方法:
manifest/database/initial.sql
CREATE TABLE IF NOT EXISTS `users`
(
`uid` varchar(10) NOT NULL UNIQUE COMMENT 'User Unique ID',
`username` varchar(25) NOT NULL UNIQUE COMMENT 'User Name',
`password` varchar(45) NOT NULL COMMENT 'User Password',
PRIMARY KEY (`uid`),
INDEX `idx_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `messages`
(
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Message ID',
`user_uid` varchar(10) NOT NULL COMMENT 'Message Sender Uid',
`content` varchar(100) NOT NULL COMMENT 'Message Content',
`created_at` datetime DEFAULT NULL COMMENT 'Created Time',
`updated_at` datetime DEFAULT NULL COMMENT 'Updated Time',
`deleted_at` datetime DEFAULT NULL COMMENT 'Soft deleted Time',
PRIMARY KEY (`id`),
FOREIGN KEY (`user_uid`) REFERENCES `users`(`uid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
初始化
使用以下指令启动数据库容器:
docker compose up -d --build
进入容器并执行 var/database
下的 sql 文件:
mysql -u dbadmin -pPassword bootcamp < /var/database/initial.sql
使用以下指令执行 sql 文件:
mysql -u dbadmin -pPassword bootcamp < /var/database/initial.sql
插入数据
进入容器并执行以下指令来进入你的数据库:
mysql -u dbadmin -pPassword bootcamp
使用以下指令将数据插入 users
表:
INSERT IGNORE INTO `users`(`uid`, `username`, `password`)
VALUES ('0000000000', 'admin', '123456');
检查数据:
SELECT * FROM `users`;
uid | username | password |
---|---|---|
0000000000 | admin | 123456 |
ℹ️
- 不推荐储存明文密码,你可以稍后添加你的加密算法。
- 本条记录是增删改查部分需要的,因为我们在
messages
表中添加了FOREIGN KEY
。