Hello everyone,

I've been struggling with this one for a while, so I decided to post here.

I built a crud web application to manage hosts configuration for a backend 
backup application.

There is a parent table (Devices) , which relates to child tables by name 
(authName , promptName ...). I defined foreign keys constraint where delete 
of a child is restricted (if the child is used in the parent table).

Problem is, foreign keys do not seem to be effective from the web app. If I 
open a connection to the db from the cli and enable PRAGMA foreign_keys = 
ON; before attempting a delete, I received the appropriate response 

sqlite> delete from Auths where authName = "myAuth";
Error: foreign key constraint failed

Even if it's being defined in my schema, it's not working. 

So I searched the forums for an answer. One good solution was to have the 
PRAGMA defined in ~/.sqliterc, but this is working only for the user. 

Finally someone said it had to be applied at each connection, so I added 
the call " on connection " to send the command every time, still no luck.

Below is the relevant piece of code for discussion, can someone please 
point out what's wrong with my approach ?




helper sqlite => sub {my $sql = Mojo::SQLite->new('sqlite:mynewdb2.db')};


app->sqlite->on(connection => sub {
my ($sql, $dbh) = @_;
$dbh->do('PRAGMA foreign_keys = ON');
});


app->sqlite->auto_migrate(1)->migrations->name('ConfigMgt')->from_string(<<EOF
-- 1 up
PRAGMA foreign_keys = ON;

create  table  if not exists  Devices 
(
  hostname  text  ,
  ipaddress  text  ,
  groupName  text  ,
  authName  text  ,
  connectionName  text  ,
  promptName  text  ,
  ignoreStatus  int  default 0,
  dateAdd  datetime  ,
  dateMod  datetime  , 
  primary key (hostname, ipaddress),
  constraint deviceAuth foreign key (authName)references Auths(authName) on 
delete restrict  on update no action ,
  constraint deviceScript foreign key (groupName)references 
Scripts(scriptName) on delete restrict  on update no action ,
  constraint devicePrompt foreign key (promptName)references 
Prompts(promptName) on delete restrict  on update no action ,
  constraint deviceConnection foreign key (connectionName)references 
Connections(connectionName) on delete restrict  on update no action 
);




-- 
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/mojolicious.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/mojolicious/f8d536f2-4ea7-4447-9b8e-04cc639bb287%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to