DBのテーブルアクセスに失敗

Sqliteのテーブルを作成し、アクセスしようとしたらエラーが出たのでメモする。


テーブル名の末尾はsに


下記のようなコードを書いたらエラーになった。

#ユーザー管理テーブル
class Usertbl < Sequel::Model
  unless DB.table_exists?(:usertbl)
    DB.create_table(:usertbl) do
      primary_key :id
      String :username
      String :password
    end
  end
end

#レコード登録
Usertbl.insert(:username => "ayaketan", :password => "1234")

f:id:ayaketan:20120116104551j:image

そこで、テーブルの作成名を:usertblから:usertblsに変更したところ、うまくいった。

require 'sinatra'
require 'rubygems'
require 'sequel'

DB = Sequel.connect("sqlite://user.db")

#ユーザー管理テーブル
class Usertbl < Sequel::Model
  unless DB.table_exists?(:usertbls)
    DB.create_table(:usertbls) do
      primary_key :id
      String :username
      String :password
    end
  end
end

#レコード登録
Usertbl.insert(:username => "ayaketan", :password => "1234")

クラス名の先頭以外に大文字を使用しない


また、下記のようにクラス名の先頭以外に大文字を使用した場合も上手くいかなかったので、注意。

require 'sinatra'
require 'rubygems'
require 'sequel'

DB = Sequel.connect("sqlite://user.db")

#ユーザー管理テーブル
class UserTbl < Sequel::Model
  unless DB.table_exists?(:usertbls)
    DB.create_table(:usertbls) do
      primary_key :id
      String :username
      String :password
    end
  end
end

#レコード登録
Usertbl.insert(:username => "ayaketan", :password => "1234")

f:id:ayaketan:20120116104614j:image