/ / डीबीएक्स :: कक्षा मैं SQLite के लिए PRAGMA विदेशी_की कैसे सक्षम करूं? - perl, sqlite3, dbix-class

डीबीआईएक्स :: कक्षा मैं SQLite के लिए PRAGMA विदेशी_की कैसे सक्षम करूं? - perl, sqlite3, 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");

धन्यवाद,

उत्तर:

जवाब के लिए 5 № 1

दोनों

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",