PostgreSQL的多列
创建复合索引时的情况
环境
-
- Rails
- PostgreSQL
设置
在 migration 文件中添加以下内容:
add_index :xxxxxxxxxxx_xxxxxxx, [:xxxxxxxx_id, :xxxxxxxxxx_id]
这是在 Rails 中常见的索引追加设置。
迁移后的描述
bundle exec rake db:migrate:up VERSION=xxxxxxxxxxxxxxxxxxxxxxxxx
使用以上命令执行Rails的迁移。
没有出现特别的错误,迁移顺利完成。
请确认索引是否已经成功创建。
SELECT tablename, indexname FROM pg_indexes;
select * from pg_indexes where indexname = 'インデックス名';
执行上述命令后,未显示添加的索引。
解决方案 (jiě jué àn)
据发现,PostgreSQL的标识符长度限制为63个字节。
实际生成的字符数超出了这个限制。
通过此链接可以找到有关PostgreSQL的SQL语法和词法的详细文档。
这次生成表名和列名时碰巧出错了,无法成功生成。希望在执行migrate时出现错误或失败。请使用选项指定:name,确保在63个字节以内。
add_index :xxxxxxxxxxx_xxxxxxx, [:xxxxxxxx_id, :xxxxxxxxxx_id], :name => 'original_name'