2
인덱스 테이블에 다른 인덱스 열을 추가하고 싶지만 테이블의 인덱스를 너무 길게받습니다. 제한은 64 자입니다. 레일즈 3과 MySQL DB. 나는 인덱스 추가하려면 다음 마이그레이션을 실행하려고Ruby on Rails에서 마이그레이션을 통해 다른 인덱스를 추가하면 64 자 제한을 초과합니다.
create_table "admin_users_projects", :force => true do |t|
t.integer "admin_user_id"
t.integer "project_id"
end
add_index "admin_users_projects", ["admin_user_id", "project_id"], :name => "index_admin_users_projects_on_admin_user_id_and_project_id"
: 다음과 같이
현재 스키마는
class AddIndexToAdminUsersProjects < ActiveRecord::Migration
def change
add_index :index_admin_users_projects_on_admin_user_id_and_project_id, :admin_users_project_id
end
end
을 그러나 얻을 (짧은) 레이크을 시도 할 때 다음과 같은 :
Larrys-MacBook-Pro:scrumtool larrydavid$ rake db:migrate
== AddIndexToAdminUsersProjects: migrating ===================================
-- add_index(:index_admin_users_projects_on_admin_user_id_and_project_id, :admin_users_project_id)
rake aborted!
An error has occurred, all later migrations canceled:
Index name 'index_index_admin_users_projects_on_admin_user_id_and_project_id_on_admin_users_project_id' on table 'index_admin_users_projects_on_admin_user_id_and_project_id' is too long; the limit is 64 characters
[...]
정확히 맞으면 이름을 직접 지정해야합니다. 그러나 이후에 마이그레이션을 통해 인덱스를 제거하려는 경우 해당 인덱스를 지정해야합니다 (그렇지 않으면 열을 기반으로 프로그래밍 방식으로 인덱스를 찾아 삭제하는 메서드를 만드는 것이 좋습니다). – DRobinson