首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >杂货巡检- CodeIgniter relation_n_n错误

杂货巡检- CodeIgniter relation_n_n错误
EN

Stack Overflow用户
提问于 2014-11-28 17:34:56
回答 1查看 727关注 0票数 0

在使用n_n关系在crud中保存数据(或更新)时,我遇到了一个问题,我有一个与product_detail相关的产品表,产品详细信息有3个外键,连接到一个称为颜色的表,以及其他被称为材料的表。知道为什么失败吗?谢谢你的帮助。

错误是:

数据库错误发生

错误编号: 1452

无法添加或更新子行:外键约束失败(medina_db.product_detail、约束product_detail_ibfk_3外键(material_id)引用material (id))

插入product_detail (product_idcolor_id)值('4','1')

文件名: /Applications/MAMP/htdocs/industrias_medina/models/grocery_crud_model.php

线路号码: 413

我的Grocery代码:

代码语言:javascript
运行
复制
$crud = new grocery_CRUD();
$crud->set_table('product')->set_subject('Productos');
$crud->set_relation_n_n("Colores", 'product_detail', 'color', 'product_id', 'color_id', 'name');
$crud->set_relation_n_n("Materiales", 'product_detail', 'material', 'product_id', 'material_id', 'name');
$crud->set_field_upload('image','assets/uploads/files');
$crud->fields('name','model','description', "Colores", "Materiales", 'image');
$output = $crud->render();
$this->_productos_output($output);

SQL:

代码语言:javascript
运行
复制
CREATE TABLE `color` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(250) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=ucs2 AUTO_INCREMENT=2 ;

CREATE TABLE `material` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(250) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

CREATE TABLE `product` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Unique identifier',
  `name` varchar(250) NOT NULL COMMENT 'Product''s name',
  `model` varchar(250) NOT NULL COMMENT 'Product''s model',
  `description` varchar(400) NOT NULL COMMENT 'Product''s description',
  `image` varchar(400) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='Table to store products' AUTO_INCREMENT=13 ;

CREATE TABLE `product_detail` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `product_id` int(11) NOT NULL,
  `color_id` int(11) NOT NULL,
  `material_id` int(11) NOT NULL,
  PRIMARY KEY (`id`,`product_id`,`color_id`,`material_id`),
  KEY `product_id` (`product_id`),
  KEY `color_id` (`color_id`),
  KEY `material_id` (`material_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;
EN

回答 1

Stack Overflow用户

发布于 2014-11-28 20:04:34

看起来您的product_detail表有一个引用材料表的material_id列。insert语句没有将任何内容插入到该material_id列中。您需要在该列中插入一个值(存在于either中),设置引用资料中键的默认值,或者为该列设置默认值为NULL。

谢谢,

安德鲁

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27193585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档