Can not add foreign key constraint

Gerard Seibert carmel_ny at outlook.com
Mon Apr 24 09:29:17 UTC 2017


On Mon, 24 Apr 2017 08:31:19 +0100, Matthew Seaman stated:

> On 24/04/2017 08:13, David Mehler wrote:
> > Not sure if this is a FreeBSD issue specific with the Mysql port I'm
> > trying to add a table to an existing database. I'm wanting it to get
> > one of it's fields from an already existing table. I've done this
> > before in this database. This works:
> > 
> > CREATE TABLE `virtual_users` (
> >   `id` int(11) NOT NULL auto_increment,
> >   `domain_id` int(11) NOT NULL,
> >   `user` varchar(40) NOT NULL,
> >   `password` varchar(128) NOT NULL,
> >   `quota` bigint(20) NOT NULL DEFAULT 256,
> >   `quota_messages` int(11) NOT NULL DEFAULT 0,
> >   PRIMARY KEY (`id`),
> >   UNIQUE KEY `user` (`user`),
> >   FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE
> > CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
> > 
> > 
> > This does not:
> > 
> > CREATE TABLE IF NOT EXISTS `lastauth` (
> > `user` varchar(40) NOT NULL,
> > `remote_ip` varchar(18) NOT NULL,
> > `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
> > CURRENT_TIMESTAMP,
> > PRIMARY KEY (`user`),
> > FOREIGN KEY (user) REFERENCES virtual_users(user) ON DELETE CASCADE
> > ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
> > 
> > Can anyone spot the situation?  
> 
> This is a question better put on one of the MySQL support sites --
> it's not really anything FreeBSD related.  I do know mysql has a
> somewhat lacking approach to foreign keys -- it's only with InnoDB
> recently that it's had anything like reasonable support, and even now
> it allows but ignores one of the two standard ways of adding a
> foreign key in a table declaration.
> 
> Try using an integer field as the foreign key -- the primary key of
> the referenced table is generally the best choice.

I have never used 'foreign keys' myself; however, I did find these two
articles regarding them;

http://www.mysqltutorial.org/mysql-foreign-key/
https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

-- 
Carmel



More information about the freebsd-questions mailing list