错误 - 您好,我在CakePHP中插入记录时收到此错误。
错误:SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(`tens_australia` .locations`,CONSTRAINT`fk_locations_users1` FOREIGN KEY(`user_id`)REFERENCES` users`(`id`)ON DELETE NO ACTION ON UPDATE NO ACTION)
背景 - 我正在尝试在位置表中添加“位置”,该位置表使用来自users表的“用户ID”作为外键。我确实在用户表中添加了用户,所以情况并非如此。我知道这是因为我将“用户ID”值作为下拉列表。我可以成功添加位置,如果我通过phpmyadmin添加它与表单上使用的相同的值集,所以我不知道是什么情况。
这是我的位置控制器添加功能的一部分 -
$users = $this->Locations->Users->find('list', ['limit' => 200]);
$this->set(compact('location', 'users'));
$this->set('_serialize', ['location']);
这是我的位置add.ctp的一部分,我从users table
获取我的外键值echo $this->Form->control('Created By', ['options' => $users]);
这是我的架构文件 -
-- -----------------------------------------------------
-- Table `tens_australia`.`locations`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `tens_australia`.`locations` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`phone` VARCHAR(16) NOT NULL,
`instructions` VARCHAR(255) NULL,
`capacity` INT NOT NULL,
`loc_map_url` VARCHAR(255) NOT NULL,
`country` CHAR(2) NOT NULL,
`state` VARCHAR(4) NOT NULL,
`city` VARCHAR(45) NOT NULL,
`postal_code` VARCHAR(16) NOT NULL,
`street` VARCHAR(45) NOT NULL,
`room_no` VARCHAR(16) NULL,
`user_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_locations_users1_idx` (`user_id` ASC),
CONSTRAINT `fk_locations_users1`
FOREIGN KEY (`user_id`)
REFERENCES `tens_australia`.`users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `tens_australia`.`users`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `tens_australia`.`users` (
`id` INT NOT NULL AUTO_INCREMENT,
`given_name` VARCHAR(45) NOT NULL,
`surname` VARCHAR(45) NOT NULL,
`phone` VARCHAR(16) NULL,
`fax` VARCHAR(16) NULL,
`email` VARCHAR(255) NOT NULL,
`username` VARCHAR(255) NOT NULL,
`password` VARCHAR(255) NOT NULL,
`user_type` CHAR(1) NOT NULL,
`is_active` TINYINT(1) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `username_UNIQUE` (`username` ASC),
UNIQUE INDEX `email_UNIQUE` (`email` ASC),
UNIQUE INDEX `phone_UNIQUE` (`phone` ASC))
ENGINE = InnoDB;