【发布时间】:2017-03-06 01:51:40
【问题描述】:
我正在使用 Ruby 2.3.0 在 IBM Bluemix 上开发 Rails 4.2.7 应用程序。当我安装了 Devise 用户模型迁移已经生成,只是一个标准文件,没有花哨的选项。在部署期间,迁移会触发三个查询。第一个用于创建用户表:
CREATE TABLE users (
id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,
email varchar(255) DEFAULT '' NOT NULL,
encrypted_password varchar(255) DEFAULT '' NOT NULL,
reset_password_token varchar(255),
reset_password_sent_at timestamp,
remember_created_at timestamp,
sign_in_count integer DEFAULT 0 NOT NULL,
current_sign_in_at timestamp,
last_sign_in_at timestamp,
current_sign_in_ip varchar(255),
last_sign_in_ip varchar(255),
created_at timestamp NOT NULL,
updated_at timestamp NOT NULL)
另外两个用于创建唯一索引:
CREATE UNIQUE INDEX index_users_on_email ON USERS(email)
CREATE UNIQUE INDEX index_users_on_reset_password_token ON USERS(reset_password_token)
第一条语句运行良好,正在创建表。但是,问题是表类型默认使用organize by column 创建。 CREATE UNIQUE INDEX 语句失败,似乎要运行它们,表必须是 organized by row。
我可以通过 SQL 语句直接在数据库中删除迁移并创建表,并在末尾添加organize by row 子句,然后运行剩余的两个查询。
问题是我遇到了同样的问题,当迁移想要运行以下两个查询时它再次失败:
CREATE TABLE schema_migrations (version varchar(255) NOT NULL)
CREATE UNIQUE INDEX unique_schema_migrations ON schema_migrations (version)
我想我可以再次遇到同样的问题,所以我想找到一种方法让所有表默认按行组织,最好是通过迁移。有没有人遇到过这个问题?
我的manifest.yml 如下所示:
applications:
- path: .
buildpack: https://github.com/cloudfoundry/ruby-buildpack.git
memory: 1024M
instances: 1
domain: eu-gb.mybluemix.net
name: windykacja
host: windykacja
disk_quota: 1024M
services:
- dashDB-win
这是我的 gemfile:
source 'https://rubygems.org'
ruby '2.3.0'
gem 'rails', '4.2.7'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'devise'
gem 'bootstrap-sass', '~> 3.3.6'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
group :production do
gem 'rails_12factor'
gem 'ibm_db'
end
group :development, :test do
gem 'byebug'
end
group :development do
gem 'web-console', '~> 2.0'
gem 'spring'
gem 'sqlite3'
end
【问题讨论】:
标签: ruby-on-rails ibm-cloud db2-luw unique-index dashdb