Re: Can not add foreign key constraint
Peter Brawley <[email protected]> Mon, 24 Apr 2017 15:28:06 -0500
| Newsgroups | gmane.comp.db.mysql.general |
|---|---|
| Message-ID | <[email protected]> |
On 4/24/2017 13:59, David Mehler wrote: > Hello, > > root@localhost [mail]> show engine innodb_status; > ERROR 1286 (42000): Unknown storage engine 'innodb_status' Well it's very unlikely InnoDB made that up, it's probably in one of your Create texts. PB ----- > > > This is on a Mysql 5.7 setup. > > Thanks. > Dave. > > > > On 4/24/17, Peter Brawley <[email protected]> wrote: >> On 4/24/2017 12:28, David Mehler wrote: >>> Hello, >>> >>> Here's the create table sand error message. >>> >>> root@localhost [(none)]> use mail; >>> Database changed >>> root@localhost [mail]> 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; >>> ERROR 1215 (HY000): Cannot add foreign key constraint >>> >>> >>> For the table it's referencing here it is: >>> >>> CREATE TABLE `virtual_users` ( >>> `id` int(11) NOT NULL auto_increment, >>> `domain_id` int(11) NOT NULL, >>> `user` varchar(40) NOT NULL, >>> `password` varchar(32) 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; >>> >>> Hope this helps. >> Adding in a dummy Create Table for the missing referenced >> `virtual_domains`, we have ... >> >> drop table if exists lastauth, virtual_users, virtual_domains; >> >> CREATE TABLE virtual_domains ( >> >> id int PRIMARY KEY >> >> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; >> >> CREATE TABLE `virtual_users` ( >> >> `id` int(11) NOT NULL auto_increment, >> >> `domain_id` int(11) NOT NULL, >> >> `user` varchar(40) NOT NULL, >> >> `password` varchar(32) NOT NULL, >> >> `quota` bigint(20) NOT NULL DEFAULT 256, >> >> `quota_messages` int(11) NOT NULL DEFAULT 0, >> >> PRIMARY KEY (`id`), >> >> UNIQUE KEY (`user`), >> >> FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE >> >> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; >> >> 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; >> >> >> which executes without error. To find out what's going awry in your >> setup, right after the error occurs execute ... >> >> show engine innodb_status; >> >> >> and search the result for LATEST FOREIGN KEY ERROR. >> >> PB >> >> >> -- >> MySQL General Mailing List >> For list archives: http://lists.mysql.com/mysql >> To unsubscribe: http://lists.mysql.com/mysql >> >> -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql