On Tuesday, March 13, 2018 at 7:26:28 AM UTC-7, Eleanor McHugh wrote:
>
> I'm getting back into Sequel after a break of several years and am running
> into problems creating Sequel::Model subclasses which use set_schema. Every
> time I try this pattern I'm getting runtime errors of the form:
>
> `prepare': Amalgalite::SQLite3::Error: Failure to prepare statement
>> SELECT * FROM `services` LIMIT 1 : [SQLITE_ERROR 1] : no such table:
>> services (Sequel::DatabaseError)
>
>
> where my code is of the form
>
> require 'sequel'
>> DB = Sequel.connect database: 'database.db', adapter: 'amalgalite', mode:
>> 'w+'
>> class Service < Sequel::Model
>> set_schema do
>> primary_key :id
>> String :address, unique: true, null: false
>> end
>> end
>
>
> This pattern worked perfectly in the last major project I did with Sequel
> and I'm baffled as to what I'm doing wrong. The only substantive difference
> is that for that project I used a MySQL backend rather than Amalgalite. On
> the off-chance this is an adapter bug I've also tried with the standard
> SQLite adapter.
>
> One thing I noticed reading through the RDoc for Sequel::Model is the
> @@lazy_schema_loading variable and I've tried setting this via its accessor
> but that raises a NoMethodError.
>
> Any insights into what I'm doing wrong will be gratefully received.
>
I'm not sure what version of Sequel you are running. In Sequel 5,
set_schema does not exist. Sequel does not use class variables at all, not
in core nor in any plugins or extensions.
You probably want to change the code to:
require 'sequel'
DB = Sequel.connect database: 'database.db', adapter: 'amalgalite', mode:
'w+'
DB.create_table?(:services) do
primary_key :id
String :address, unique: true, null: false
end
class Service < Sequel::Model
end
Maybe that will help.
Thanks,
Jeremy
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to sequel-talk+unsubscr...@googlegroups.com.
To post to this group, send email to sequel-talk@googlegroups.com.
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.