|
|
|
## 0. setup environment
|
|
|
|
|
|
|
|
On Mac :
|
|
|
|
|
|
|
|
brew install ariga/tap/atlas
|
|
|
|
|
|
|
|
On Linux :
|
|
|
|
|
|
|
|
curl -sSf https://atlasgo.sh | sh -s -- --community
|
|
|
|
|
|
|
|
Setup to you database url :
|
|
|
|
|
|
|
|
export ATLAS_URL="mysql://coze:coze123@localhost:3306/opencoze?charset=utf8mb4&parseTime=True"
|
|
|
|
|
|
|
|
## 2. init baseline
|
|
|
|
|
|
|
|
# cd ./docker/atlas
|
|
|
|
atlas migrate diff initial --env local --to $ATLAS_URL
|
|
|
|
|
|
|
|
# The following command is the same as the one above.
|
|
|
|
atlas migrate diff initial \
|
|
|
|
--dir "file://migrations" \
|
|
|
|
--to $ATLAS_URL \
|
|
|
|
--dev-url "docker://mysql/8/"
|
|
|
|
|
|
|
|
## 3. update database table
|
|
|
|
|
|
|
|
On developer machine(I want add/update table for my business)
|
|
|
|
|
|
|
|
# First, add or update your table as needed.
|
|
|
|
|
|
|
|
# Second, autogenerate diff sql
|
|
|
|
# cd ./docker/atlas
|
|
|
|
atlas migrate diff update --env local --to $ATLAS_URL # step 1
|
|
|
|
|
|
|
|
# The following command is the same as the one above.
|
|
|
|
atlas migrate diff update \
|
|
|
|
--dir "file://migrations" \
|
|
|
|
--to $ATLAS_URL \
|
|
|
|
--dev-url "docker://mysql/8/"
|
|
|
|
# will autogenerate some xxxxx_update.sql in margrations
|
|
|
|
|
|
|
|
|
|
|
|
# Third, Check whether the contents of the new xxxx_update.sql file are correct.
|
|
|
|
# If any changes are needed, please modify it manually.
|
|
|
|
# If you manually modified margrations file, you need to run the following command to update its hash value.
|
|
|
|
# If you did not manually modify margrations file, do not run the following command.
|
|
|
|
atlas migrate hash # step 2 if need
|
|
|
|
atlas migrate status --url $ATLAS_URL --dir "file://migrations" # check status
|
|
|
|
|
|
|
|
# Last, dump the latest database schema for other developer
|
|
|
|
atlas schema inspect -u $ATLAS_URL --exclude "atlas_schema_revisions,table_*" > opencoze_latest_schema.hcl # step 3
|
|
|
|
|
|
|
|
## 4. apply migration
|
|
|
|
|
|
|
|
On developer machine(I want to update my local database with the changes that others developer have made)
|
|
|
|
|
|
|
|
# cd ./docker/atlas
|
|
|
|
atlas schema apply -u $ATLAS_URL --to file://opencoze_latest_schema.hcl # step 1 for developer on mac, this command will execute in start_debug.sh
|
|
|
|
|
|
|
|
On Server machine
|
|
|
|
|
|
|
|
atlas migrate apply --url $ATLAS_URL --dir "file://migrations" --baseline "20250703095335" # step 1 for dev server
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|