我开始学习Go语言和SQL。我尝试在我的Go语言项目中使用golang-migrate进行初始迁移。数据库是postgresql
这是迁移文件:
CREATE TABLE users
(
id serial not null unique,
name varchar(255) not null,
username varchar(255) not null unique,
password_hash varchar(255) not null,
)
CREATE TABLE todo_lists
(
id serial not null unique,
title varchar(255) not null,
description varchar(255),
);
CREATE TABLE users_lists
(
id serial not null unique,
user_id int references users (id) on delete cascade not null,
list_id int references todo_lists (id) on delete cascade not null,
);
CREATE TABLE todo_items
(
id serial not null unique,
title varchar(255) not null,
description varchar(255),
done boolean not null default false,
);
CREATE TABLE lists_items
(
id serial not null unique,
item_id int references todo_items (id) on delete cascade not null,
list_id int references todo_lists (id) on delete cascade not null,
);
我使用的命令:
第一个月
bash返回:no change
(无任何错误)
哪里会有问题?
1条答案
按热度按时间jvlzgdj91#
我整理了一个小指南来帮助你解决你的问题。请一定要跟着做,你会很好去!
运行Postgres
为了运行我用来测试解决方案的Postgres示例,我使用了以下命令:
此命令使用以下两个内容启动Postgres示例:
1.它设置端口Map(计算机上的端口
5432
Map到Docker容器的端口5432
)。1.它将
postgres
用户的密码设置为postgres
(只是为了演示)。创建迁移脚本
为了创建第一个迁移脚本,我使用了以下命令:
多亏了这个命令,我才能创建文件夹路径
db/migrations
和其中的两个文件(一个用于up
迁移,另一个用于down
迁移)。用代码填充文件
下一步是用
CREATE
和DROP
语句填充上面创建的文件。000001_create_users_table.up.sql
文件为了使迁移具有幂等性,我添加了
IF NOT EXISTS
检查。当您要编写迁移时,请将此作为最佳实践。000001_create_users_table.down.sql
文件这同样适用于
IF EXISTS
检查。注意你删除东西的顺序,因为你很容易因为对象的依赖性而出错。运行迁移
要运行此迁移,请确保创建了to_do数据库。要应用迁移,请运行:
这样,您将得到以下输出:
1/u create_users_table (44.392422ms)
.如果运行两次,第二个输出将是:
no change
.当您想要撤消迁移时,必须运行以下语句:
This will undo all of the migrations applied so far. For a deeper understanding, please refer to the official doc: https://github.com/golang-migrate/migrate#cli-usage.
让我知道这是否解决了您的问题,或者您是否需要其他任何东西!