Skip to content

Instantly share code, notes, and snippets.

@geowa4
Last active May 2, 2017 03:57
Show Gist options
  • Save geowa4/863bbcc3573f7057b1c2510e4a8d7b97 to your computer and use it in GitHub Desktop.
Save geowa4/863bbcc3573f7057b1c2510e4a8d7b97 to your computer and use it in GitHub Desktop.
# Create users table and apply indices.
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users, force: true, id: false, primary_key: 'id' do |t|
t.binary :id, default: 'uuid_v4()'
t.string :login, null: false
t.string :email, null: false
end
add_index :users, :login, unique: true
add_index :users, :email, unique: true
end
end
$ bin/rake db:migrate
== 20170502034348 CreateUsers: migrating ======================================
-- create_table(:users, {:force=>true, :id=>false, :primary_key=>"id"})
-> 0.2403s
-- add_index(:users, :email, {:unique=>true})
-> 0.1133s
-- add_index(:users, :login, {:unique=>true})
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::InternalError: ERROR: statement cannot follow a schema change in a transaction
: SELECT COUNT(*)
FROM pg_class c
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','v','m') -- (r)elation/table, (v)iew, (m)aterialized view
AND c.relname = 'users'
AND n.nspname = ANY (current_schemas(false))
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `async_exec'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `block in exec_no_cache'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:589:in `block in log'
/Users/geowa4/.gem/ruby/2.4.0/gems/activesupport-5.0.2/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `exec_no_cache'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:585:in `execute_and_clear'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:13:in `select_value'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql/schema_statements.rb:111:in `data_source_exists?'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/schema_statements.rb:1144:in `add_index_options'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql/schema_statements.rb:549:in `add_index'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:846:in `block in method_missing'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:815:in `block in say_with_time'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:815:in `say_with_time'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:835:in `method_missing'
/Users/geowa4/Development/geowa4/meetup-docker/db/migrate/20170502034348_create_users.rb:10:in `change'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:789:in `exec_migration'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:773:in `block (2 levels) in migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:772:in `block in migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `with_connection'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:771:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:951:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1214:in `block in execute_migration_in_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1282:in `block in ddl_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `block in transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/transaction.rb:189:in `within_new_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:211:in `transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1282:in `ddl_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1213:in `execute_migration_in_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1185:in `block in migrate_without_lock'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1184:in `each'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1184:in `migrate_without_lock'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1132:in `block in migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1301:in `with_advisory_lock'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1132:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1006:in `up'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:984:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/tasks/database_tasks.rb:161:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/railties/databases.rake:58:in `block (2 levels) in <top (required)>'
ActiveRecord::StatementInvalid: PG::InternalError: ERROR: statement cannot follow a schema change in a transaction
: SELECT COUNT(*)
FROM pg_class c
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','v','m') -- (r)elation/table, (v)iew, (m)aterialized view
AND c.relname = 'users'
AND n.nspname = ANY (current_schemas(false))
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `async_exec'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `block in exec_no_cache'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:589:in `block in log'
/Users/geowa4/.gem/ruby/2.4.0/gems/activesupport-5.0.2/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `exec_no_cache'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:585:in `execute_and_clear'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:13:in `select_value'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql/schema_statements.rb:111:in `data_source_exists?'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/schema_statements.rb:1144:in `add_index_options'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql/schema_statements.rb:549:in `add_index'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:846:in `block in method_missing'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:815:in `block in say_with_time'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:815:in `say_with_time'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:835:in `method_missing'
/Users/geowa4/Development/geowa4/meetup-docker/db/migrate/20170502034348_create_users.rb:10:in `change'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:789:in `exec_migration'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:773:in `block (2 levels) in migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:772:in `block in migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `with_connection'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:771:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:951:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1214:in `block in execute_migration_in_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1282:in `block in ddl_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `block in transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/transaction.rb:189:in `within_new_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:211:in `transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1282:in `ddl_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1213:in `execute_migration_in_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1185:in `block in migrate_without_lock'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1184:in `each'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1184:in `migrate_without_lock'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1132:in `block in migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1301:in `with_advisory_lock'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1132:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1006:in `up'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:984:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/tasks/database_tasks.rb:161:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/railties/databases.rake:58:in `block (2 levels) in <top (required)>'
PG::InternalError: ERROR: statement cannot follow a schema change in a transaction
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `async_exec'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `block in exec_no_cache'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:589:in `block in log'
/Users/geowa4/.gem/ruby/2.4.0/gems/activesupport-5.0.2/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `exec_no_cache'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql_adapter.rb:585:in `execute_and_clear'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:13:in `select_value'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql/schema_statements.rb:111:in `data_source_exists?'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/schema_statements.rb:1144:in `add_index_options'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/postgresql/schema_statements.rb:549:in `add_index'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:846:in `block in method_missing'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:815:in `block in say_with_time'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:815:in `say_with_time'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:835:in `method_missing'
/Users/geowa4/Development/geowa4/meetup-docker/db/migrate/20170502034348_create_users.rb:10:in `change'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:789:in `exec_migration'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:773:in `block (2 levels) in migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:772:in `block in migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `with_connection'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:771:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:951:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1214:in `block in execute_migration_in_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1282:in `block in ddl_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `block in transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/transaction.rb:189:in `within_new_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/transactions.rb:211:in `transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1282:in `ddl_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1213:in `execute_migration_in_transaction'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1185:in `block in migrate_without_lock'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1184:in `each'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1184:in `migrate_without_lock'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1132:in `block in migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1301:in `with_advisory_lock'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1132:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:1006:in `up'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/migration.rb:984:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/tasks/database_tasks.rb:161:in `migrate'
/Users/geowa4/.gem/ruby/2.4.0/gems/activerecord-5.0.2/lib/active_record/railties/databases.rake:58:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment