php约束违反错误1452 [英] php constraint violation Error 1452

查看:51
本文介绍了php约束违反错误1452的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

早上好, 我尝试使用此pdo在我的数据库中插入事件时,此sql错误有一个大问题:


SQL:

Good morning, i have a big problem with this sql error when i,m trying to insert a event in my database with this pdo:


SQL:

$subsquery1 = "SELECT cat_id FROM categories WHERE cat_name = ".$event_cat;

$subsquery2 = "SELECT tournament_id FROM tournaments WHERE tournament_name = ".$event_tournament;

$sqlx = "INSERT INTO events(event_team1, event_team2, event_cat, event_tournament, event_start_at, event_end_to, event_by) VALUES(:event_team1, :event_team2, :event_cat, :event_tournament, :event_start_at, :event_end_to, :event_by)";

// Prepare statement
$statementx = $pdo->prepare($sqlx);

// execute the query
$resultx = $statementx->execute(array(':event_team1' => $event_team1, ':event_team2' => $event_team2, ':event_cat'=> $subsquery1, ':event_tournament'=> $subsquery2, ':event_start_at' => $event_start_at, ':event_end_to' => $event_end_to,':event_by'=>$event_by));


SQL错误跟随:


SQL ERROR FOLLOW :

违反完整性约束:1452无法添加或更新子级 行:外键约束失败(datenbank.events,CONSTRAINT events_ibfk_1外键(event_cat)参考categories (cat_id)在删除CASCADE时在更新CASCADE上)

Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (datenbank.events, CONSTRAINT events_ibfk_1 FOREIGN KEY (event_cat) REFERENCES categories (cat_id) ON DELETE CASCADE ON UPDATE CASCADE)

-- Table structure for table `events`
CREATE TABLE `events` (
  `event_id` int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `event_team1` varchar(255) NOT NULL,
  `event_team2` varchar(255) NOT NULL,
  `event_start_at` timestamp NOT NULL,
  `event_end_to` timestamp NOT NULL,
  `event_cat` int(8) NOT NULL,
  `event_by` int(8) NOT NULL,
  `event_tournament` int(8) NOT NULL,
  KEY `event_cat` (`event_cat`),
  KEY `event_by` (`event_by`),
  KEY `event_tournament` (`event_tournament`)
)ENGINE=InnoDB DEFAULT CHARSET=latin1;

-表posts

ALTER TABLE `posts` ADD CONSTRAINT `posts_ibfk_1` FOREIGN KEY (`post_event`) REFERENCES `events` (`event_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `posts_ibfk_2` FOREIGN KEY (`post_by`) REFERENCES `users` (`id`) ON UPDATE CASCADE;

-表events

ALTER TABLE `events` ADD CONSTRAINT `events_ibfk_1` FOREIGN KEY (`event_cat`) REFERENCES `categories` (`cat_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `events_ibfk_2` FOREIGN KEY (`event_by`) REFERENCES `users` (`id`) ON UPDATE CASCADE,
  ADD CONSTRAINT `events_ibfk_3` FOREIGN KEY (`event_tournament`) REFERENCES `tournaments` (`tournament_id`) ON DELETE CASCADE ON UPDATE CASCADE;

请有人帮助...

推荐答案

违反完整性约束:1452无法添加或更新子行: 外键约束失败(datenbank.events, CONSTRAINTevents_ibfk_1外键(event_cat) 参考类别(cat_id)

Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (datenbank.events, CONSTRAINTevents_ibfk_1FOREIGN KEY (event_cat) REFERENCEScategories(cat_id)

您正在执行对表events的插入,并将值放置在列event_cat中.

You are performing an insert to table events with a value being placed in column event_cat.

该值在表categories的列cat_id中尚不存在.

That value does not already exist in table categories in the column cat_id.

您说必须这样做.因此,数据库引擎表示不会这样做.忠实地服从您的命令.

And you said it must. So the db engine says it won't do it. It is faithfully obeying your orders.

这篇关于php约束违反错误1452的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆