首页 文章

Grocery Crud - CodeIgniter relation_n_n错误

提问于
浏览
0

我在尝试使用n_n关系保存数据(或更新)时遇到问题,我有一个产品表,与product_detail相关,产品详细信息有3个外键,连接到一个名为color的表,以及其他叫材料 . 知道为什么会失败吗?我感谢你的帮助,谢谢 .

The error is this:

A Database Error Occurred

错误号码:1452

无法添加或更新子行:外键约束失败( medina_db . product_detail ,CONSTRAINT product_detail_ibfk_3 FOREIGN KEY( material_id )REFERENCES materialid ))

INSERT INTO product_detailproduct_idcolor_id )VALUES('4','1')

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

行号:413


My Grocery Crud code:

$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:

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 ;

1 回答

  • 1

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

    谢谢,

    安德鲁

相关问题