![](/img/trans.png)
[英]SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
[英]SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
我用idiorm + slim
我意識到以下更新查詢,但我嘗試在控制台phpmyadmin,它的工作原理。
update empleado set `nieempleado`='11111', nombre="Mickael", apellido1="aaa", apellido2="bbb", email="ma@gmail.com", puesto=0 where id = 1
但在idiorm錯誤SQLSTATE [23000]
有什么問題?
if(count($error)==0)
{
$empleado = ORM::for_table('empleado')->find_one($id);
$empleado->nieempleado = $nie;
$empleado->nombre = $nombre;
$empleado->apellido1 = $apellido1;
$empleado->apellido2 = $apellido2;
$empleado->email = $email;
$empleado->puesto = $puesto;
if(!empty($telefono))
{
$empleado->telefono = $telefono;
}
if($usuario!=='')
{
$empleado->usuario_idusuario = $usuario;
}
$empleado->save();
$app->redirect($app->urlFor('employeeList'));
}
我的表是usuario:
CREATE TABLE IF NOT EXISTS `usuario` (
`id` int(11) UNSIGNED AUTO_INCREMENT,
`username` varchar(45) NOT NULL,
`contrasenia` varchar(255) NOT NULL,
`email` varchar(45) NOT NULL,
`admin` tinyint(1) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
和empleado
CREATE TABLE IF NOT EXISTS `empleado` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`nieempleado` VARCHAR(10) NOT NULL,
`nombre` VARCHAR(45) NOT NULL,
`apellido1` VARCHAR(50) NOT NULL,
`apellido2` VARCHAR(50) NOT NULL,
`email` VARCHAR(100) NOT NULL,
`telefono` VARCHAR(10) NULL,
`puesto` int(11) NOT NULL,
`usuario_idusuario` int(11) UNSIGNED,
PRIMARY KEY (`id`),
INDEX `fk_empleado_usuario1_idx` (`usuario_idusuario` ASC),
CONSTRAINT `fk_empleado_usuario_id_fk`
FOREIGN KEY (`usuario_idusuario`)
REFERENCES `usuario` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE = InnoDB;
我收到以下錯誤:
Type: PDOException
Code: 23000
Message: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`viversoft`.`empleado`, CONSTRAINT `fk_empleado_usuario_id_fk` FOREIGN KEY (`usuario_idusuario`) REFERENCES `usuario` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
File: C:\wamp\www\viver\vendor\j4mie\idiorm\idiorm.php
Line: 413
Trace
#0 C:\wamp\www\viver\vendor\j4mie\idiorm\idiorm.php(413): PDOStatement->execute(Array)
#1 C:\wamp\www\viver\vendor\j4mie\idiorm\idiorm.php(1735): ORM::_execute('UPDATE `emplead...', Array, 'default')
#2 C:\wamp\www\viver\routes\employees.php(213): ORM->save()
#3 [internal function]: {closure}('1')
#4 C:\wamp\www\viver\vendor\slim\slim\Slim\Route.php(462): call_user_func_array(Object(Closure), Array)
#5 C:\wamp\www\viver\vendor\slim\slim\Slim\Slim.php(1326): Slim\Route->dispatch()
#6 C:\wamp\www\viver\vendor\slim\slim\Slim\Middleware\Flash.php(85): Slim\Slim->call()
#7 C:\wamp\www\viver\vendor\slim\slim\Slim\Middleware\MethodOverride.php(92): Slim\Middleware\Flash->call()
#8 C:\wamp\www\viver\vendor\slim\slim\Slim\Middleware\PrettyExceptions.php(67): Slim\Middleware\MethodOverride->call()
#9 C:\wamp\www\viver\vendor\slim\slim\Slim\Slim.php(1271): Slim\Middleware\PrettyExceptions->call()
#10 C:\wamp\www\viver\public\index.php(55): Slim\Slim->run()
#11 {main}
你的錯誤意味着你要插入值的列usuario_idusuario
在empleado
並不在列中存在的表id
在usuario
表。 在沒有看到正在運行的查詢和表值的情況下,我無法再向您提供任何信息。 您需要確保進入usuario_idusuario
任何值都存在於id
。
謝謝,
安德魯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.