mirror of https://github.com/status-im/migrate.git
480a5a634a
* Consistently lock in ensureVersionTable and do not call ensureVersionTable from Drop across all database implementations * Add test for dropping postgres databases * Fix failing database tests * Fix CockroachDb test, lock table should be created before versionTable * Add Initialize() to Driver interface, and add integration tests for Drop() between database implementations and migrate * Remove Initialize, document breaking behaviour of Drop * Revert introduction of Initialize method * Removed Initialize in Stub as well * Remove call to non-existent Initialize and make sure to close re-initialized database connections * Revert changes to TestDrop in database/testing * Split Test and TestMigrate into different test entrypoints * Remove unused import in migrate_testing * Remove erroneous code to fix tests * Add stub source imports to database tests * Add Stub source to migrate tests * Use example migrations for tests * Add file driver to database tests * Align database directory layout * Add file source driver to Cassandra * Review changes * Minor syntactic change for cleaner diff |
||
---|---|---|
.. | ||
examples/migrations | ||
README.md | ||
cassandra.go | ||
cassandra_test.go |
README.md
Cassandra
- Drop command will not work on Cassandra 2.X because it rely on system_schema table which comes with 3.X
- Other commands should work properly but are not tested
- The Cassandra driver (gocql) does not natively support executing multipe statements in a single query. To allow for multiple statements in a single migration, you can use the
x-multi-statement
param. There are two important caveats:- This mode splits the migration text into separately-executed statements by a semi-colon
;
. Thusx-multi-statement
cannot be used when a statement in the migration contains a string with a semi-colon. - The queries are not executed in any sort of transaction/batch, meaning you are responsible for fixing partial migrations.
- This mode splits the migration text into separately-executed statements by a semi-colon
Usage
cassandra://host:port/keyspace?param1=value¶m2=value2
URL Query | Default value | Description |
---|---|---|
x-migrations-table |
schema_migrations | Name of the migrations table |
x-multi-statement |
false | Enable multiple statements to be ran in a single migration (See note above) |
port |
9042 | The port to bind to |
consistency |
ALL | Migration consistency |
protocol |
Cassandra protocol version (3 or 4) | |
timeout |
1 minute | Migration timeout |
username |
nil | Username to use when authenticating. |
password |
nil | Password to use when authenticating. |
sslcert |
Cert file location. The file must contain PEM encoded data. | |
sslkey |
Key file location. The file must contain PEM encoded data. | |
sslrootcert |
The location of the root certificate file. The file must contain PEM encoded data. | |
sslmode |
Whether or not to use SSL (disable|require|verify-ca|verify-full) |
timeout
is parsed using time.ParseDuration(s string)
Upgrading from v1
- Write down the current migration version from schema_migrations
DROP TABLE schema_migrations
- Download and install the latest migrate version.
- Force the current migration version with
migrate force <current_version>
.