Rails в базе данных Oracle с именем таблицы длиной более 30 символов и Globalize не может найти мою таблицу - PullRequest
0 голосов
/ 12 марта 2019

Я портирую базу данных MySQL и хочу перейти на базу данных Oracle 12cRC2.Подвох в том, что некоторые имена моих таблиц имеют длину более 30 символов.

Все работает нормально (после того, как немного поигрался с моим файлом schema.rb).

Я использую «Глобализацию»"драгоценный камень, чтобы локализовать мою БД.

Когда я запускаю seed, я получаю сообщение об ошибке в моих таблицах перевода, например:

OCIError: ORA-04043: object "aaaaaaaa_bbbbb_cccc_translations" does not exist

Но когда я sqlplus, я не вижу свою таблицу без проблем ... либо с DESC, либоЗапрос SELECT.

Я использую oracle-instantclient12.2 для подключения.

Я подозреваю, что длина имени таблицы, так как другие таблицы с меньшим именем не повышают исполнение

Мой стек:

rails aborted!
ActiveRecord::ConnectionAdapters::OracleEnhanced::ConnectionException: "DESC aaaaaaaa_bbbbb_cccc_translations" failed; does it exist?
/usr/local/bundle/gems/activerecord-oracle_enhanced-adapter-5.2.5/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb:209:in `rescue in describe'
/usr/local/bundle/gems/activerecord-oracle_enhanced-adapter-5.2.5/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb:202:in `describe'
/usr/local/bundle/gems/activerecord-oracle_enhanced-adapter-5.2.5/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:552:in `pk_and_sequence_for'
/usr/local/bundle/gems/activerecord-oracle_enhanced-adapter-5.2.5/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:585:in `primary_key'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/connection_adapters/schema_cache.rb:43:in `primary_keys'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/attribute_methods/primary_key.rb:100:in `get_primary_key'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/attribute_methods/primary_key.rb:87:in `reset_primary_key'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/attribute_methods/primary_key.rb:75:in `primary_key'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/associations/foreign_association.rb:6:in `foreign_key_present?'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/associations/association.rb:203:in `find_target?'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/associations/collection_association.rb:272:in `load_target'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/associations/collection_proxy.rb:46:in `load_target'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/associations/collection_proxy.rb:1032:in `records'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/relation/delegation.rb:71:in `each'
/usr/local/bundle/gems/globalize-5.2.0/lib/globalize/active_record/instance_methods.rb:130:in `detect'
/usr/local/bundle/gems/globalize-5.2.0/lib/globalize/active_record/instance_methods.rb:130:in `translation_for'
/usr/local/bundle/gems/globalize-5.2.0/lib/globalize/active_record/instance_methods.rb:124:in `translation'
/usr/local/bundle/gems/globalize-5.2.0/lib/globalize/active_record/instance_methods.rb:162:in `save'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/persistence.rb:36:in `create'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/relation.rb:85:in `block in create'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/relation.rb:281:in `scoping'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/relation.rb:85:in `create'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/relation.rb:164:in `find_or_create_by'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/querying.rb:8:in `find_or_create_by'
/beecom/lib/tasks/aaaaaaaa_bbbbb_cccc.rake:10:in `block (3 levels) in <top (required)>'
/beecom/lib/tasks/aaaaaaaa_bbbbb_cccc.rake:9:in `each'
/beecom/lib/tasks/aaaaaaaa_bbbbb_cccc.rake:9:in `block (2 levels) in <top (required)>'
/beecom/db/seeds.rb:209:in `<top (required)>'
/usr/local/bundle/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:285:in `load'
/usr/local/bundle/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:285:in `block in load'
/usr/local/bundle/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in `load_dependency'
/usr/local/bundle/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:285:in `load'
/usr/local/bundle/gems/railties-5.2.2/lib/rails/engine.rb:551:in `load_seed'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/tasks/database_tasks.rb:281:in `load_seed'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/railties/databases.rake:194:in `block (2 levels) in <top (required)>'
/usr/local/bundle/gems/railties-5.2.2/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/usr/local/bundle/gems/railties-5.2.2/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/usr/local/bundle/gems/railties-5.2.2/lib/rails/command.rb:48:in `invoke'
/usr/local/bundle/gems/railties-5.2.2/lib/rails/commands.rb:18:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'

Caused by:
OCIError: ORA-04043: object "aaaaaaaa_bbbbb_cccc_translations" does not exist
metadata.c:175:in oci8lib_260.so
/usr/local/bundle/gems/ruby-oci8-2.2.7/lib/oci8/metadata.rb:2061:in `block in describe_table'
/usr/local/bundle/gems/ruby-oci8-2.2.7/lib/oci8/metadata.rb:2060:in `times'
/usr/local/bundle/gems/ruby-oci8-2.2.7/lib/oci8/metadata.rb:2060:in `describe_table'
/usr/local/bundle/gems/activerecord-oracle_enhanced-adapter-5.2.5/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb:350:in `describe'
/usr/local/bundle/gems/activerecord-oracle_enhanced-adapter-5.2.5/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb:206:in `describe'
/usr/local/bundle/gems/activerecord-oracle_enhanced-adapter-5.2.5/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:552:in `pk_and_sequence_for'
/usr/local/bundle/gems/activerecord-oracle_enhanced-adapter-5.2.5/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:585:in `primary_key'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/connection_adapters/schema_cache.rb:43:in `primary_keys'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/attribute_methods/primary_key.rb:100:in `get_primary_key'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/attribute_methods/primary_key.rb:87:in `reset_primary_key'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/attribute_methods/primary_key.rb:75:in `primary_key'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/associations/foreign_association.rb:6:in `foreign_key_present?'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/associations/association.rb:203:in `find_target?'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/associations/collection_association.rb:272:in `load_target'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/associations/collection_proxy.rb:46:in `load_target'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/associations/collection_proxy.rb:1032:in `records'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/relation/delegation.rb:71:in `each'
/usr/local/bundle/gems/globalize-5.2.0/lib/globalize/active_record/instance_methods.rb:130:in `detect'
/usr/local/bundle/gems/globalize-5.2.0/lib/globalize/active_record/instance_methods.rb:130:in `translation_for'
/usr/local/bundle/gems/globalize-5.2.0/lib/globalize/active_record/instance_methods.rb:124:in `translation'
/usr/local/bundle/gems/globalize-5.2.0/lib/globalize/active_record/instance_methods.rb:162:in `save'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/persistence.rb:36:in `create'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/relation.rb:85:in `block in create'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/relation.rb:281:in `scoping'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/relation.rb:85:in `create'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/relation.rb:164:in `find_or_create_by'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/querying.rb:8:in `find_or_create_by'
/beecom/lib/tasks/aaaaaaaa_bbbbb_cccc.rake:10:in `block (3 levels) in <top (required)>'
/beecom/lib/tasks/aaaaaaaa_bbbbb_cccc.rake:9:in `each'
/beecom/lib/tasks/aaaaaaaa_bbbbb_cccc.rake:9:in `block (2 levels) in <top (required)>'
/beecom/db/seeds.rb:209:in `<top (required)>'
/usr/local/bundle/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:285:in `load'
/usr/local/bundle/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:285:in `block in load'
/usr/local/bundle/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in `load_dependency'
/usr/local/bundle/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:285:in `load'
/usr/local/bundle/gems/railties-5.2.2/lib/rails/engine.rb:551:in `load_seed'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/tasks/database_tasks.rb:281:in `load_seed'
/usr/local/bundle/gems/activerecord-5.2.2/lib/active_record/railties/databases.rake:194:in `block (2 levels) in <top (required)>'
/usr/local/bundle/gems/railties-5.2.2/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/usr/local/bundle/gems/railties-5.2.2/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/usr/local/bundle/gems/railties-5.2.2/lib/rails/command.rb:48:in `invoke'
/usr/local/bundle/gems/railties-5.2.2/lib/rails/commands.rb:18:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => db:seed

1 Ответ

0 голосов
/ 12 марта 2019

Ваше имя таблицы "aaaaaaaa_bbbbb_cccc_translations" имеет длину 32 байта, ограничение было 30, но в 12cR2 оно было увеличено до 128. Но я думаю, что клиентские инструменты, которые вы используете для доступа к базе данных, имеют проблему с обработкой более длинных имен.

https://oracle -base.com / статьи / 12c / длинные Идентификаторы-12cr2

...