我在mysql表中创建了大约500000个唯一键。
表格为空。
我已将索引设置为1 alter table my_table auto_increment = 1;
字段unique_id
是varchar
和unique
。
当我启动脚本来创建密钥时,我收到以下错误消息。
例如
写作的关键是4947E4
Duplicate entry '4947' for key 'unique_id'
下
写作的关键是676E97
Duplicate entry '676' for key 'unique_id'
等等。看起来mysql挑选出密钥的整数值并检查它们是否存在。
是错误还是功能?
请帮忙
答案 0 :(得分:1)
仔细检查unique_id字段的类型,它的行为类似于INTEGER。
答案 1 :(得分:0)
1-使用DEFAULT NULL时,您的查询有一些技巧。然后你说unique_id。因此,如果您使用DEFAULT值插入两个值,它们将为NULL并且它们是重复的。
2-您必须检查是否插入字符串4947E4。
3-尝试使用带有id的unique_id,因为id是自动增量,永远不会重复。
UNIQUE KEY `unique_index` (id , unique_id)
答案 2 :(得分:0)
不知道为什么,但似乎php类型的功能很奇怪。我在mysql语句被触发之前已经注释掉了这个部分。现在它可以工作
`foreach ($data as $key => $value)
{
if (is_string($value))
{
$data[$key] = self::$_db->real_escape_string($value);
}
if (is_numeric($value))
{
$data[$key] = (int)$value;
}
}`
is_string
应该是真的,因为例如676E97是一个字符串。或不?