Skip to main content

Handling drift between my schema and the atlas_schema_revisions table

Question

My revisions table lists the following versions:

mysql> SELECT * FROM  "atlas_schema_revisions";
+-------------------------+---------+-----+
| version | applied | ... |
+-------------------------+---------+-----+
| .atlas_cloud_identifier | 0 | |
| 20251007053111 | 1 | |
| 20251007051222 | 1 | |
| 20250618084333 | 1 | |
+-------------------------+---------+-----+

However, when I inspect the target database, the schema changes from 20250618084333 were never applied. How can I delete the latest row(s) so the revision history reflects the actual state?

Encoding for Atlas' schema files

Question

What encoding is used by Atlas for schema files? How do you avoid encoding issues with PowerShell on Windows?

Answer

Atlas uses UTF-8 to encode schema files and migration files generated by Atlas. UTF-8 is the default encoding on nearly all system terminals, but on Windows, PowerShell uses UTF-16 by default. This can cause an encoding issue when Atlas loads the schema files generated by the inspect command.

How can I keep sensitive values out of Terraform state?

Terraform can write resource arguments into state and saved plans. HashiCorp's Terraform state documentation warns that state files can expose stored secrets. The sensitive flag redacts CLI and UI output, but Terraform can still record the value in state.

With the atlas_schema resource, Terraform can pass connection metadata while Atlas resolves the credential when it evaluates atlas.hcl.