制約

NOT NULL制約のかけ忘れがあったので、sqlite3 Evangeline.dbから修正。tagテーブルのtag_idカラムにNOT NULLを振ってなかった。データは入ってないから、DROP TABEL tagしてからCREATE TABLE tagで再作成。なくても動くけど、完全を追求したいのです。で、今はこんな感じ。

-- Evangeline::Model::DBIC::Schema::Image
CREATE TABLE image (
    image_id      TEXT PRIMARY KEY NOT NULL,
    extension     TEXT NOT NULL,
    width         INTEGER NOT NULL,
    height        INTEGER NOT NULL,
    filesize      INTEGER NOT NULL,
    original_name TEXT NOT NULL,
    comments      TEXT,
    post          INTEGER NOT NULL
);
-- Evangeline::Model::DBIC::Schema::ImageTag
-- for n:m mapping
CREATE TABLE image_tag (
    id       INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    image_id TEXT NOT NULL,
    tag_id   INTEGER NOT NULL
);
-- Evangeline::Model::DBIC::Schema::Tag
CREATE TABLE tag (
    tag_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    tag    TEXT NOT NULL
);

SQLite用なので、他のRDBMSだとシンタックスエラーで撥ねられるかも。