错误:键'PRIMARY'重复输入'0'

时间:2013-09-08 21:12:09

标签: mysql sql database

我无法解决我的问题,这是我得到的mysql的错误:

Error: Duplicate entry '0' for key 'PRIMARY'

当我在数据库中有一条记录时,我可以编辑和更新我的数据但是当我添加两行时,我收到错误。

数据库中的一些图片

当我更改行时,行ID下降到0,这是一个问题,因为我无法编辑其他行。

When i try to change row, first row ID goes down to 0 Database

enter image description here

CREATE TABLE `dati` (
 `ID` int(11) NOT NULL AUTO_INCREMENT,
 `title` varchar(255) NOT NULL,
 `value1` varchar(255) NOT NULL,
 `value2` varchar(255) NOT NULL,
 PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 PACK_KEYS=1

更新代码:

<?php // Izlabot datus datubāzē!
$titletxt = $_POST['title_edit'];
$value1 = $_POST['value1_edit'];
$value2 = $_POST['value2_edit'];

if(isset($_POST['edit'])){
$con=mysqli_connect("localhost","root","","dbname");
if (mysqli_connect_errno())
  {
  echo "Neizdevās savienoties ar MySQL: " . mysqli_connect_error();
  }
$sql="UPDATE dati SET ID='$ID',title= '$titletxt',value1='$value1',value2='$value2' WHERE 1";
if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo '<script>
        alert(" Ieraksts ir veiksmīgi labots! ");

        window.location.href = "index.php";
    </script>';
mysqli_close($con);
}
?>

从表格:

<?php
            $con=mysqli_connect("localhost","root","","dbname");
            if (mysqli_connect_errno())
              {
              echo "Neizdevās savienoties ar MySQL: " . mysqli_connect_error();
              }
            $result = mysqli_query($con,"SELECT * FROM dati");
            while($row = mysqli_fetch_array($result))
              {
              echo "<tr>";
                  echo "<td><input id='titled' type='text' name='title_edit' value='" . $row['title'] . "'></td>";
                  echo "<td><input id='value1d' type='text' name='value1_edit' value='" . $row['value1'] . "'></td>";
                  echo "<td><input id='value2d' type='text' name='value2_edit' value='" . $row['value2'] . "'></td>";
                  echo "<input type='hidden' name='id' value='" . $row['ID'] . "'>";
                  echo "<td><button name='edit' id='edit_btn' class='frm_btns' value='" . $row['ID'] . "'>Edit</button></td>";
              echo "</tr>";
              }
            mysqli_close($con);
        ?>

它无法读取ID的值,因为返回了0。

7 个答案:

答案 0 :(得分:13)

对于因问题标题(正如我所做)而到达此问题的人,这解决了我的问题:

此错误可能表示表的PRIMARY KEY未设置为AUTO-INCREMENT,(并且您的插入查询未指定ID值)。

要解决:

检查表格上是否设置了PRIMARY KEY,表示PRIMARY KEY设置为AUTO-INCREMENT。

How to add auto-increment to column in mysql database using phpmyadmin?

答案 1 :(得分:3)

问题是您的代码尝试更改数据中的每一行,将主键更改为$ ID中的值。这不会在您的代码中的任何位置设置,并且可能被强制转换为0

$sql="UPDATE `dati` SET `ID`='$ID',`title`= 
'$titletxt',`value1`='$value1',`value2`='$value2' WHERE 1";

主键值应该发送到表单并返回,以便代码可以处理它,但是应该保留该值,因此......

$sql="UPDATE `dati` SET `title`= 
'$titletxt',`value1`='$value1',`value2`='$value2' WHERE `ID`=$ID";

您还应该阅读MySQL注入 - 即使您已经修复了错误,任何人都可以使用您的数据库做任何他们想要的事情。

答案 2 :(得分:1)

set ID = $ID

中的问题

尝试删除它,以便代码

$sql="UPDATE `dati` `title`=        '$titletxt',`value1`='$value1',`value2`='$value2' WHERE 1";

请务必更改此位置,因为它会使用这些值更新行

答案 3 :(得分:1)

试试这个:

ID int(11) PRIMARY KEY AUTOINCREMENT(1,3)

答案 4 :(得分:1)

请确保您的质量键也是A-I。

答案 5 :(得分:1)

我一直在努力解决这个问题。我的表打开了自动增量 (AI) 在我开始修补记录之前,我在 phpMyAdmin 中尝试了一个简单的修复。 转到 SQL 选项卡并依次运行每个命令。

修复表 wp_options 修理表 wp_users 修复表 wp_usermeta

这对我有用并允许我登录。

答案 6 :(得分:0)

错误日志,例如(以我为例),我正在使用 Aurora DB:

  

PHP消息:WordPress数据库错误为查询INSERT INTO`date173_postmeta

的键“ PRIMARY”重复输入“ 0”

如何使用 MySQL Workbench 对其进行修复:

1-在您的数据库上进行连接,并在出现问题的情况下进入表,在我的情况下为date173_postmeta

2-选择工具图标:

enter image description here

3-在右侧的窗口/标签中, 选中AI复选框 ,然后 单击“应用”按钮

enter image description here

按照最后的步骤,我的问题消失了。