activerecord-jdbc-адаптер Проблема с идентификатором приращения zOS DB2

короткий

Столбец ID не увеличивается с INSERT INTO.

Долго

Я с:

  • JRuby 1.7.11
  • activerecord (3.2.17)
  • activerecord-jdbc-адаптер (1.3.6)
  • DB2 v10 в z/OS (мэйнфрейм) (драйвер db2jcc4.jar версия 4.15.99)

/config/database.yml:

production:                                                                     
  adapter: jdbc                                                                 
  driver: com.ibm.db2.jcc.DB2Driver                                             
  url: jdbc:db2://142.123.123.123:123/D2TZMSTR                                  
  connection_alive_sql: "SELECT 1 FROM SYSIBM.SYSDUMMY1 FETCH FIRST 1 ROWS ONLY"
  host: 142.123.123.123                                                          
  port: 123                                                                    
  database: ESTIPROD                                                            
  tablespace: ESTIMATE                                                          
  username: monkey                                                              
  password: business                                                            
  encoding: unicode                                                             
  Blockquote

дб / мигрирует /create_bid.rb:

class CreateBids < ActiveRecord::Migration  
  def self.up                               
    create_table :practices, :primary_key => "practice_id", :force => true do |t|
      t.string :practice_no,        :null => false, :limit => 3                  
      t.string  :practice_name,     :null => false, :limit => 50     
      t.timestamps                                                               
    end                                                                          

    # Create alternate index for practice_no                                     
    add_index :practices, :practice_no                                           

    # Populate Practice table with practices who including into BID project                                                                                  
    Practice.create(:practice_no   => '001',                                     
                    :practice_name => 'Mainframe'                                
    )                                                                            

    Practice.create(:practice_no   => '002',                                     
                   :practice_name => 'Unix'                                     
    )                                                                            
...
end

Когда я выполняю команду 'rake db:migrate', я получил следующее сообщение от моего мэйнфрейма:

ActiveRecord:: JDBCError: com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: ошибка SQL DB2: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=PRAC19S5;0000000201, >DRIVER=4.15.99: практика INSERT INTO_ (INSERT INTO (, имя-практики, имя-практики, обновленное-значение) ЗНАЧЕНИЯ ('2014-03-26 19: 27: 31.749000', 0, 'Unix', '002', '2014-03-26 19: 27: 31.749000')

От IBM:

-803 ВСТРОЕННОЕ ИЛИ ОБНОВЛЕННОЕ ЗНАЧЕНИЕ НЕДОПУСТИМО, ПОТОМУ ЧТО ИНДЕКС В ИНДЕКСНОМ ПРОСТРАНСТВЕ indexspace-name > ОГРАНИЧИВАЕТ КОЛОННЫ ТАБЛИЦЫ, ЧТО НИКАКИЕ ДВЕ РЯДА НЕ МОГУТ СОДЕРЖАТЬ ДУБЛИРОВАННЫЕ ЗНАЧЕНИЯ В ЭТИХ> КОЛОННАХ. Избавиться от существующей строки - X record-id

Мы все понимаем, что значение должно быть:

VALUES ('2014-03-26 19:27:31.749000', 
        1, 
        'Unix', 
        '002', 
        '2014-03-26 19:27:31.749000')

ВЫБРАТЬ * ИЗ ПРАКТИКИ:

    | PRACTICE_ID | PRACTICE_NO | PRACTICE_NAME | CREATED_AT                 | UPDATED_AT                 |  
  1_|           0 | 001         | Mainframe     | 2014-03-26-19.27.29.279000 | 2014-03-26-19.27.29.279000 |  

Есть идеи?

0 ответов

Другие вопросы по тегам