【发布时间】:2013-03-16 13:30:43
【问题描述】:
我正在尝试使用 activerecord 使用 codeigniter 导入一些数据。我收到了这个对我没有任何意义的错误
<p>Error Number: 1062</p>
<p>Duplicate entry 'L'' for key 'brand'</p>
<p>INSERT INTO `brands` (`brand`) VALUES ('L\'awlek')</p>
我对brands 表有一个UNIQUE 约束,因为我不想重复。我的问题是,为什么它会在第一个撇号处切断价值并声称这是关键?
相关代码:
define('TABLE','brands');
function add( $data ){
$exists = $this->exists( $data['brand'] );
if( ! $exists )
$query = $this->db->insert( TABLE , $data);
return ! $exists ? $this->db->insert_id() : $exists;
}
function exists( $value ){
$query = $this->db->get_where( TABLE , array('brand'=>$value));
if( $query && $query->num_rows() > 0 ){
return $query->row()->id;
} else {
return false;
}
}
【问题讨论】:
-
列定义为 varchar(2) 还是类似的?
-
“品牌”列设置为 varchar(150)
-
密钥
brand是否定义为长度为2? -
如何查看密钥长度?我使用 SQLYog 创建表并为其分配了唯一索引
-
brands 表中品牌的 key_len 为 752
标签: php mysql codeigniter activerecord