mysql - 在Codeigniter中添加mysql表之间的关系

标签 mysql codeigniter foreign-keys foreign-key-relationship

我正在使用 Codeigniter,想要添加帖子评论标签之间的关系。

帖子:

CREATE TABLE IF NOT EXISTS `posts` (
`post_id` int(5) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(100) COLLATE utf8_persian_ci NOT NULL,
`slug` varchar(100) COLLATE utf8_persian_ci NOT NULL,
`content` text COLLATE utf8_persian_ci NOT NULL,
`time` varchar(10) COLLATE utf8_persian_ci NOT NULL,
`num_of_comments` int(3) NOT NULL,
`cat` varchar(20) COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(100) COLLATE utf8_persian_ci NOT NULL,
PRIMARY KEY (`post_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=15 ;  

评论:

CREATE TABLE IF NOT EXISTS `comments` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`content` text COLLATE utf8_persian_ci NOT NULL,
`date` varchar(100) COLLATE utf8_persian_ci NOT NULL,
`time` varchar(100) COLLATE utf8_persian_ci NOT NULL,
`name` varchar(20) COLLATE utf8_persian_ci NOT NULL,
`email` varchar(30) COLLATE utf8_persian_ci NOT NULL,
`image` varchar(20) COLLATE utf8_persian_ci NOT NULL,
`ip` varchar(16) COLLATE utf8_persian_ci NOT NULL,
`submit` int(1) NOT NULL,
`reply` text COLLATE utf8_persian_ci NOT NULL,
`reply_date` varchar(100) COLLATE utf8_persian_ci NOT NULL,
`reply_time` varchar(100) COLLATE utf8_persian_ci NOT NULL,
`post_id` int(5) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `post_id` (`post_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=26 ;  

但它打印此错误:

SQL query:

ALTER TABLE  `comments` ADD FOREIGN KEY (  `post_id` ) REFERENCES  `codeig`.`posts` (

`post_id`
) ON DELETE CASCADE ON UPDATE CASCADE ;

MySQL said: 

#1452 - Cannot add or update a child row: a foreign key constraint fails (`codeig`.     <result 2 when explaining filename '#sql-fc8_dd'>, CONSTRAINT `#sql-fc8_dd_ibfk_1` FOREIGN  KEY (`post_id`) REFERENCES `posts` (`post_id`) ON DELETE CASCADE ON UPDATE CASCADE)  

我根本不知道在说什么。
请帮忙...

最佳答案

您在哪里编写此查询?或者这是由 codeigniter 生成的? 在任何 SQL 管理工具中尝试一下:

ALTER TABLE comments ADD FOREIGN KEY (post_id) REFERENCES posts(post_id) ON DELETE CASCADE ON UPDATE CASCADE ;

您不需要 codeig 部分,我假设这是数据库名称。

关于mysql - 在Codeigniter中添加mysql表之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12003409/

相关文章:

mysql - SQL Check(汽车租赁)

php - parse_str 随机向键添加分号

codeigniter - 将函数的变量传递给 codeigniter Controller 中的其他函数?

sql-server - 数据库中已经有一个名为 'tblPerson_Gender_FK' 的对象

mysql - VB.Net 和 MySQL

mysql - 如何删除mySQL中引用多列的外键

mysql - mysql自增插入

mysql - SQL如何在值更改时检索第一行?

mysql - 如何返回基于列值并按日期分组的行?

php - 无需数据库交互的动态状态更新