3

更新時と削除時にカスケードを使用するために、DBIx::Classを使用してSQLite3への外部キーサポートを有効にしたい。このhttp://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/Storage/DBI/SQLite.pmをドキュメントで見つけましたが、使用方法があまり明確ではありません。

これが、スクリプトでSchema.pmと接続文字列を設定する方法です。

# Schema.pm
package MyApp::Schema;
use base qw/DBIx::Class::Schema/;

use strict;
use warnings;
our $VERSION = '0.00001';

__PACKAGE__->load_namespaces();
__PACKAGE__->load_components(qw/Schema::Versioned/);
__PACKAGE__->upgrade_directory('sql/');

# connection string in script
use MyApp::Schema;
my $schema = MyApp::Schema->connect('dbi:SQLite:db/myapp.db');

ありがとう、

4

1 に答える 1

5

両方

my $schema = MyApp::Schema->connect(
    'dbi:SQLite:db/myapp.db',
    undef,
    undef,
    {
        on_connect_do => 'PRAGMA foreign_keys = ON',
    }
);

my $schema = MyApp::Schema->connect(
    dsn           => 'dbi:SQLite:db/myapp.db',
    on_connect_do => 'PRAGMA foreign_keys = ON',
);

トリックを行う必要があります。


コメントに記載されているように、あなたも使用することができます

on_connect_call => 'use_foreign_keys',

それ以外の

on_connect_do => 'PRAGMA foreign_keys = ON',
于 2013-02-22T02:31:05.277 に答える