Hi,

I find my situation is similar to ticket #1289. The STI cannot perform on 
sqlite3::memory: database now, right? Thanks.

    DataMapper.setup(:default, ENV['DATABASE_URL'] || 'sqlite3::memory:')
    DataMapper::Model.raise_on_save_failure = true


On Nov 23, 2010, at 9:29 PM, Zhi-Qiang Lei wrote:

> Hi,
> 
> The error still comes if I can my code in these ways.
> 
>    class Transaction
>      include DataMapper::Resource
>      property :tid, Serial
>      property :type, Discriminator
>      property :comment, String, :length => 140
>      property :created_at, DateTime
>      belongs_to :loan
>    end
> 
>    class Agreement < Transaction
>    end
> 
> Error:
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/adapters/dm-do-adapter.rb:70:in
>  `execute_non_query': duplicate column name: tid (DataObjects::SyntaxError)
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/adapters/dm-do-adapter.rb:70:in
>  `block (2 levels) in upgrade_model_storage'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/adapters/dm-do-adapter.rb:64:in
>  `map'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/adapters/dm-do-adapter.rb:64:in
>  `block in upgrade_model_storage'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-do-adapter-1.0.2/lib/dm-do-adapter/adapter.rb:260:in
>  `with_connection'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/adapters/dm-do-adapter.rb:63:in
>  `upgrade_model_storage'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:71:in
>  `upgrade_model_storage'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:143:in
>  `auto_upgrade!'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:145:in
>  `auto_upgrade!'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:45:in
>  `block in repository_execute'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:69:in
>  `block (2 levels) in each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:68:in
>  `block in each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:67:in
>  `each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:67:in
>  `each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:69:in
>  `block in each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:67:in
>  `each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:67:in
>  `each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:44:in
>  `repository_execute'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:27:in
>  `auto_upgrade!'
>       from /Users/siegfried/Projects/eIOU/models.rb:114:in `<module:Models>'
>       from /Users/siegfried/Projects/eIOU/models.rb:12:in `<module:EIOU>'
>       from /Users/siegfried/Projects/eIOU/models.rb:10:in `<top (required)>'
>       from <internal:lib/rubygems/custom_require>:29:in `require'
>       from <internal:lib/rubygems/custom_require>:29:in `require'
>       from /Users/siegfried/Projects/eIOU/spec/model_spec.rb:3:in `<top 
> (required)>'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/configuration.rb:334:in
>  `load'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/configuration.rb:334:in
>  `block in load_spec_files'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/configuration.rb:334:in
>  `map'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/configuration.rb:334:in
>  `load_spec_files'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/command_line.rb:18:in
>  `run'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/runner.rb:55:in
>  `run_in_process'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/runner.rb:46:in
>  `run'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/runner.rb:10:in
>  `block in autorun'
> 
> Or,
> 
>    class Transaction
>      include DataMapper::Resource
>      property :type, Discriminator
>      property :comment, String, :length => 140
>      property :created_at, DateTime
>      belongs_to :loan, :key => true
>    end
> 
>    class Agreement < Transaction
>    end
> 
> Error:
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/adapters/dm-do-adapter.rb:70:in
>  `execute_non_query': duplicate column name: type (DataObjects::SyntaxError)
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/adapters/dm-do-adapter.rb:70:in
>  `block (2 levels) in upgrade_model_storage'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/adapters/dm-do-adapter.rb:64:in
>  `map'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/adapters/dm-do-adapter.rb:64:in
>  `block in upgrade_model_storage'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-do-adapter-1.0.2/lib/dm-do-adapter/adapter.rb:260:in
>  `with_connection'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/adapters/dm-do-adapter.rb:63:in
>  `upgrade_model_storage'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:71:in
>  `upgrade_model_storage'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:143:in
>  `auto_upgrade!'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:145:in
>  `auto_upgrade!'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:45:in
>  `block in repository_execute'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:69:in
>  `block (2 levels) in each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:68:in
>  `block in each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:67:in
>  `each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:67:in
>  `each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:69:in
>  `block in each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:67:in
>  `each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/support/descendant_set.rb:67:in
>  `each'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:44:in
>  `repository_execute'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-migrations/auto_migration.rb:27:in
>  `auto_upgrade!'
>       from /Users/siegfried/Projects/eIOU/models.rb:113:in `<module:Models>'
>       from /Users/siegfried/Projects/eIOU/models.rb:12:in `<module:EIOU>'
>       from /Users/siegfried/Projects/eIOU/models.rb:10:in `<top (required)>'
>       from <internal:lib/rubygems/custom_require>:29:in `require'
>       from <internal:lib/rubygems/custom_require>:29:in `require'
>       from /Users/siegfried/Projects/eIOU/spec/model_spec.rb:3:in `<top 
> (required)>'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/configuration.rb:334:in
>  `load'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/configuration.rb:334:in
>  `block in load_spec_files'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/configuration.rb:334:in
>  `map'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/configuration.rb:334:in
>  `load_spec_files'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/command_line.rb:18:in
>  `run'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/runner.rb:55:in
>  `run_in_process'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/runner.rb:46:in
>  `run'
>       from 
> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.1.0/lib/rspec/core/runner.rb:10:in
>  `block in autorun'
> 
> 
> On Nov 20, 2010, at 8:55 PM, Piotr Solnica wrote:
> 
>> Hi,
>> 
>> Discriminator cannot be used as a key because it won't be unique. The
>> error is confusing though and it's something that we could improve.
>> You need to specify a serial property in you base model and it will
>> work.
>> 
>> Cheers
>> 
>> # solnic
>> 
>> On Nov 20, 1:31 pm, Zhi-Qiang Lei <[email protected]> wrote:
>>> Dear All,
>>> 
>>> Do I need to assign different key for each sub-model when I use single 
>>> table inheritance of datamapper?
>>> 
>>>    class Action
>>>      include DataMapper::Resource
>>>      property :type, Discriminator, :key => true
>>>      property :comment, String, :length => 140
>>>      property :created_at, DateTime
>>>      belongs_to :loan, :key => true
>>>    end
>>> 
>>>    class Agreement < Action; end
>>> 
>>> I got a error as follow.
>>> 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi 
>>> grations/adapters/dm-do-adapter.rb:70:in `execute_non_query': duplicate 
>>> column name: type (DataObjects::SyntaxError)
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi 
>>> grations/adapters/dm-do-adapter.rb:70:in `block (2 levels) in 
>>> upgrade_model_storage'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi 
>>> grations/adapters/dm-do-adapter.rb:64:in `map'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi 
>>> grations/adapters/dm-do-adapter.rb:64:in `block in upgrade_model_storage'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-do-adapter-1.0.2/lib/dm-do 
>>> -adapter/adapter.rb:260:in `with_connection'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi 
>>> grations/adapters/dm-do-adapter.rb:63:in `upgrade_model_storage'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi 
>>> grations/auto_migration.rb:71:in `upgrade_model_storage'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi 
>>> grations/auto_migration.rb:143:in `auto_upgrade!'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi 
>>> grations/auto_migration.rb:145:in `auto_upgrade!'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi 
>>> grations/auto_migration.rb:45:in `block in repository_execute'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup 
>>> port/descendant_set.rb:69:in `block (2 levels) in each'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup 
>>> port/descendant_set.rb:68:in `block in each'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup 
>>> port/descendant_set.rb:67:in `each'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup 
>>> port/descendant_set.rb:67:in `each'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup 
>>> port/descendant_set.rb:69:in `block in each'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup 
>>> port/descendant_set.rb:67:in `each'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-core-1.0.2/lib/dm-core/sup 
>>> port/descendant_set.rb:67:in `each'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi 
>>> grations/auto_migration.rb:44:in `repository_execute'
>>>        from 
>>> /Users/siegfried/.rvm/gems/ruby-1.9.2-p0/gems/dm-migrations-1.0.2/lib/dm-mi 
>>> grations/auto_migration.rb:27:in `auto_upgrade!'
>>>        from models.rb:67:in `<module:Models>'
>>>        from models.rb:15:in `<module:EIOU>'
>>>        from models.rb:9:in `<main>'
>>> 
>>> Best regards,
>>> Zhi-Qiang Lei
>>> [email protected]
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "DataMapper" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to 
>> [email protected].
>> For more options, visit this group at 
>> http://groups.google.com/group/datamapper?hl=en.
>> 
> 
> 
> Best regards,
> Zhi-Qiang Lei
> [email protected]
> 


Best regards,
Zhi-Qiang Lei
[email protected]

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/datamapper?hl=en.

Reply via email to