Migrations de base de données écrites en Go. Utilisez comme CLI ou Importer comme bibliothèque.
Fourchu de mattes / migrer
Les pilotes de base de données exécutent des migrations. Ajouter une nouvelle base de données?
Les chaînes de connexion de la base de données sont spécifiées via URL. Le format URL est dépendant du pilote mais a généralement le formulaire: dbdriver://username:password@host:port/dbname?param1=true¶m2=false
Tous les caractères URL réservés doivent être échappés. Remarque, le caractère % doit également être échappé
Explicitement, les personnages suivants doivent être échappés : ! , # , $ , % , & , ' , ( , ) , * , + , ,, / , : , ; , = , ? , @ , [ , ]
Il est plus facile d'exécuter toujours les parties URL de votre URL de connexion DB (par exemple, nom d'utilisateur, mot de passe, etc.) via un encodeur d'URL. Voir l'exemple d'extraits de python ci-dessous:
$ python3 -c ' import urllib.parse; print(urllib.parse.quote(input("String to encode: "), "")) '
String to encode: FAKEpassword!#$%&' () * +,/:;= ? @[]
FAKEpassword%21%23%24%25%26%27%28%29%2A%2B%2C%2F%3A%3B%3D%3F%40%5B%5D
$ python2 -c ' import urllib; print urllib.quote(raw_input("String to encode: "), "") '
String to encode: FAKEpassword!#$%&' () * +,/:;= ? @[]
FAKEpassword%21%23%24%25%26%27%28%29%2A%2B%2C%2F%3A%3B%3D%3F%40%5B%5D
$Les moteurs de la source lisent les migrations à partir de sources locales ou distantes. Ajouter une nouvelle source?
Documentation de la CLI
$ migrate -source file://path/to/migrations -database postgres://localhost:5432/database up 2$ docker run -v {{ migration dir }}:/migrations --network host migrate/migrate
-path=/migrations/ -database postgres://localhost:5432/database up 2GracefulStop chan bool .io.Reader streams en interne pour les frais généraux de mémoire basse.Documentation GO
import (
"github.com/golang-migrate/migrate/v4"
_ "github.com/golang-migrate/migrate/v4/database/postgres"
_ "github.com/golang-migrate/migrate/v4/source/github"
)
func main () {
m , err := migrate . New (
"github://mattes:personal-access-token@mattes/migrate_test" ,
"postgres://localhost:5432/database?sslmode=enable" )
m . Steps ( 2 )
}Vous souhaitez utiliser un client de base de données existant?
import (
"database/sql"
_ "github.com/lib/pq"
"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/postgres"
_ "github.com/golang-migrate/migrate/v4/source/file"
)
func main () {
db , err := sql . Open ( "postgres" , "postgres://localhost:5432/database?sslmode=enable" )
driver , err := postgres . WithInstance ( db , & postgres. Config {})
m , err := migrate . NewWithDatabaseInstance (
"file:///migrations" ,
"postgres" , driver )
m . Up () // or m.Steps(2) if you want to explicitly set the number of migrations to run
}Aller pour commencer
(Plus de tutoriels à venir)
Chaque migration a une migration de haut en bas. Pourquoi?
1481574547_create_users_table.up.sql
1481574547_create_users_table.down.sqlMeilleures pratiques: comment rédiger des migrations.
Découvrez Migradaptor. Remarque: Migradaptor n'est pas affilié ou soutenu par ce projet
| Version | Soutenu? | Importer | Notes |
|---|---|---|---|
| maître | ✅ | import "github.com/golang-migrate/migrate/v4" | De nouvelles fonctionnalités et correctifs de bogues arrivent ici en premier |
| v4 | ✅ | import "github.com/golang-migrate/migrate/v4" | Utilisé pour les versions stables |
| v3 | import "github.com/golang-migrate/migrate" (avec le gestionnaire de packages) ou import "gopkg.in/golang-migrate/migrate.v3" (non recommandé) | Ne pas utiliser - non pris en charge |
Oui s'il vous plait! Makefile est votre ami, lisez le guide de développement.
Jetez également un œil à la FAQ.
Vous cherchez des alternatives? https://aweson-go.com/#database.