PHP的约束冲突错误1452
早上好, 我有难同当I,M试图在我的数据库与这个PDO插入事件此SQL错误的一个大问题: PHP的约束冲突错误1452
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错误,请:
完整性约束违规:1452不能添加或更新一个孩子 行:外键约束失败(
datenbank
events
,约束events_ibfk_1
外键(event_cat
)参考文献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
- 约束的表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_1FOREIGN KEY(event_cat) REFERENCEScategories( cat_id)
您正在对表events
执行插入操作,并将值放在列event_cat
中。
该值尚不表categories
列cat_id
存在。
而你说过它必须。所以数据库引擎说它不会这样做。它忠实地遵守你的命令。
上午德鲁,在PDO肯定已经存在于表类别的变量,这就是为什么我做了subsquery三个外键,或I,M在做有些事情错在那里?... –
INSERT语句中不具备正确的价值。你在选择陈述中所做的是无关紧要的。当插入到来时,这是唯一正在进行数据修改的东西。它可能是一个更新或它可能是一个插入。您选择了插入。如果你需要做一个var_dump然后这样做。 – Drew
如果您需要查看一般查询日志(您的服务器从您那里得到的),可以在[这里](http://dev.mysql.com/doc/refman/5.7/en/query-log。 HTML)...这里是什么样子的行动[这里](http://stackoverflow.com/a/38394479) – Drew
解决方案是在我的情况下,从pdo多事务更改为MySQL多事务。 –