Golang(也称为 Go 语言)是一种开源的过程化编程语言。它由 Robert Griesemer、Rob Pike 和 Ken Thompson 在 Google 设计。它于 2007 年开发,并于 2009 年公开发布。Golang 在 Google 和许多其他开源项目中得到了广泛应用。让我们通过这篇文章了解更多关于 Golang 编程语言的信息。
Golang Migrate 简介
Golang Migrate 是一个用于处理数据库迁移的 Golang 包。Golang 数据库迁移可以作为库导入或作为 CLI 使用。Golang migrate 从各种源(如文件系统 Filesystem、io/fs、GitHub、Google 云存储等)读取迁移,并将其应用到各种数据库(如 PGX、Redshift、MongoDB、MySQL 等)。数据库不像人类那样具备自主思考的能力。如果迁移不完整或不正确,操作就会失败。
文件名格式
一次迁移由两个独立的迁移文件表示,一个是从源(如文件系统、io/fs、GitHub 等)进行 向上 迁移的文件,另一个是 向下 迁移的文件。
迁移 向上 文件用于将数据库从上一版本迁移向上升级到指定版本。
> {version}_{filename}.up.{extension}
迁移 向下 文件用于将数据库迁移向下回退到上一版本。
> {version}_{filename}.down.{extension}
每个迁移的标题仅为了可读性。该库不会检查迁移文件的扩展名。请为数据库使用适当的格式(例如:MongoDB 使用 .mongodb)。Golang migrate CLI 是围绕该库的一个简单封装;它没有任何配置搜索路径、配置文件或神奇的 ENV 变量注入,并且它拥有最好的特性之一——ctrl + c (SIGINT)。它的处理非常高效。
示例:
> $ migrate -source file://path/to/migrations -database postgres://localhost:8000/database up 5
如果您想运行数据库的前 5 个迁移并想在中途停止,请发送 ctrl + c (SIGINT),CLI 将在安全点优雅地停止。
发送 SIGKILL 可立即停止。
现在让我们安装 Golang Migrate,但在此之前,请确保您的电脑上已经安装了 GO。检查您的电脑上是否安装了 GO。在 cmd 中运行以下命令来检查:
> $ go version
如果显示错误或 go 命令未被识别为内部或外部命令,这意味着您的电脑上没有安装 GO。此外,如果您的 GO 版本低于 1.15,请阅读相关文章并安装最新版本的 GO。现在,让我们开始安装 GOLANG MIGRATE 的过程。
方法 1:使用 Scoop
Scoop 是 Windows 的命令行安装程序;这使程序的安装变得简单快捷。如果您之前已经安装了它,那么请跳转到 步骤 2。否则,别担心,这只是一个 1 步 的过程。
步骤 1:安装 Scoop:在您的电脑上打开 Windows PowerShell,并运行以下命令来安装 SCOOP。
> $ irm get.scoop.sh | iex
这表明 Scoop 已成功安装在您的电脑上。
步骤 2:安装 Migrate:在您的电脑上打开 Windows PowerShell,并运行以下命令来安装 MIGRATE。
> $ scoop install migrate
!Successfully-Installed-Migrate-4.15.2
现在您已准备好使用 MIGRATE 进行数据库迁移了。
方法 2:使用 Go Toolchain
如果您的电脑上已经安装了 git,那么请继续进行 步骤 2。否则,请按照 步骤 1 中的操作进行。
步骤 1:安装 GIT:如果您没有安装 git 但在电脑上安装了 Scoop,请继续执行 步骤 1.2,否则请按照 步骤 1.1 操作。
- 首先按照 方法 1,步骤 1 安装 Scoop。
- 打开 Windows PowerShell,使用以下命令安装 git。
> $ scoop install git
步骤 2:打开 Windows Powershell 并运行以下命令,
> $ go get -u -d github.com/golang-migrate/migrate/cmd/migrate
运行以下命令时,请在您的电脑上查找它所在的路径并运行该命令。它可能在不同的驱动器或目录中,因此请仔细检查所有与 GO 相关的可能目录。您可以从我的命令中看到示例。必要时使用 ls 命令。
> $ cd src/github.com/golang-migrate/migrate/cmd/migrate
![Running-command-in-windows-Powershell](https://media.geeksforgeeks.org/wp-content/uploads