Want to find the answer quick?
Migration files
The Xata CLI stores migration files in the .xata/migrations
folder. The folder contains a list of migration files and the .ledger
file.
- The
xata pull my_feature
command pulls migrations from your branch and updates the.ledger
file. - The
xata push my_feature
command pushes your migrations to a defined branch.
Important: The .xata/migrations
folder should be committed to your git repository if you plan to use the xata push
, xata pull
command or the GitHub integration.
Each migration file holds a JSON object containing the migration's id
, parentID
, checksum
, and list of operations. The following is an example:
1 2 3 4 5 6 7 8 9
{ "id": "mig_cf5b5o8591j35ctpb500", "parentID": "mig_cf5b5o8591j35ctpb4vg", "checksum": "a40a01b6e58676a008ad6fd07e1f678d35838ea5", "operations": [ { "addTable": { "name": "user" }} { "addColumn": { "table": user", "name": "name", "type": "string" } ] }
Migration files should not be modified. If modified, the checksum may become invalid. Xata keeps track of all migrations within a database and attempting to push a modified migration file to another branch will result in an error.
Migrations must be ordered. Ordering is guaranteed by the parentID
and the ledger file, which is stored in .xata/migrations/.ledger
. The ledger file is an append only file that lists all migration files in the correct order.