-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document how to add a database migration #23793
Conversation
In case you delete a column or table, please adapt the original migration that added it (and all subsequent migrations that use the deleted value) as well so that the column or table isn't added in the first place for new instances. | ||
Keep the original migration as a no-op (with a comment) in case it becomes empty. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this what actually happens? I was always under the impression that past migrations should be left alone. There's less chance that an intermediate migration is missed that would cause some odd potential bug.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well… It's at least what I've observed with previous deletions, see for example #23605…
we can also decide to use another process, but we should decide this now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, tricky topic. I think leaving the original as-is may be safer than no-oping it. Treat it kind of like a git history that is never rewritten.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In theory, I agree.
However, as you saw in #23605, it sometimes needs to be done.
What about a paragraph such as
If you delete a column or table, do not adapt the original migration adding it and all migrations inbetween.
There is only one exception: If the original migration was broken and didn't work on some databases, you can convert the original migration and every change in between referencing the deleted content to a no-op.
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah sounds good. General rule should be to not alter old migrations except in the rare case they are broken, in wich case it is warranted to fix it and "rewrite history".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@delvh will you update with it?
@delvh It would be nice if we could have at least some docs about migrations. Are you still interested in this PR? If so, could you update your branch and resolve the open review comments? |
Closing as no response unfortunately |
This was always a point of confusion for new contributors, so let's clarify it.
Especially important is the addition that updating migrations should be written to only be executed once.