Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Duplicate entry '127' for key 1
 
 автор: Dizels   (19.12.2007 в 20:24)   письмо автору
 
 

Все добавлялось как надо, но в один момент перестало добавляться и начала выводиться ошибка.

Вот структура БД:

CREATE TABLE `biograf_artpage` (
  `id_artpage` int(10) NOT NULL auto_increment,
  `name` text NOT NULL,
  `id_site` int(4) default NULL,
  `id_parent` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id_artpage`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251;

Вот файл, при вызове которого происходит ошибка:

<?php
  
// Соединяемся с базой данных
  
require_once("../config.php");
  
// Проверяем, заполнено ли поле name
  
if(empty($_POST['name'])) links("Введите название раздела.");
  
// Заменяем одинарные кавычки на обратные
  
$name str_replace("'","`",$_POST['name']);
  if(empty(
$_POST['id_parent']))$parent=0;
  else 
$parent $_POST['id_parent'];
  
// Формируем SQL-запрос на добавление нового раздела
  
$query "INSERT INTO biograf_artpage VALUES (NULL, '$name', 0, '$parent');";
  if(
mysql_query($query))
  {
    
// В случае успешного добавления переходим на главную страницу
    // системы администрирования
    
echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
          </HEAD></HTML>"
;
  }
  else 
puterror("Ошибка при обращении к блоку статей");
  
// Функция вывода ошибки в окно браузера
  
function links($msg)
  {
    echo 
"<p>".$msg."</p>";
    echo 
"<p><a href=# onClick='history.back()'>Вернуться к правке раздела</a></p>";
    echo 
"<p><a href=index.php>Администрирование статей</a></p>";
    exit();
  }
?>

Ошибку выдает следущую:

Ошибка при обращении к блоку статей

Как мне кажется возможная ошибка - это неправильное указание типа поля (int(10)). Сейчас в таблице около 50 записей. Подскажите, пожалуйста, как решить проблему.

   
 
 автор: bronenos   (19.12.2007 в 20:32)   письмо автору
 
   для: Dizels   (19.12.2007 в 20:24)
 

-

   
 
 автор: bronenos   (19.12.2007 в 20:33)   письмо автору
 
   для: Dizels   (19.12.2007 в 20:24)
 

$parent = (int) @$_POST['id_parent'];
puterror("Ошибка при обращении к блоку статей: " . mysql_error());

   
 
 автор: Dizels   (19.12.2007 в 20:55)   письмо автору
 
   для: bronenos   (19.12.2007 в 20:33)
 

выдало вот что:

Duplicate entry '127' for key 1

Вот тока я чего-то не пойму, что это значит?

   
 
 автор: Faraon   (19.12.2007 в 21:10)   письмо автору
 
   для: Dizels   (19.12.2007 в 20:55)
 

Судя по ошибке у Вас 127 запись в id_artpage существует, и другую создать не возможно, так как это уникальный ключ.

   
 
 автор: Dizels   (19.12.2007 в 21:30)   письмо автору
 
   для: Faraon   (19.12.2007 в 21:10)
 

ну а как тогда перейти на следующую? Я просто добавлял записи, все было как обычно, а потом ошибка :(

   
 
 автор: Faraon   (19.12.2007 в 21:46)   письмо автору
 
   для: Dizels   (19.12.2007 в 21:30)
 

УВас точно поле
`id_artpage` int(10) NOT NULL auto_increment,
или tinyint ?

   
 
 автор: Dizels   (19.12.2007 в 21:58)   письмо автору
 
   для: Faraon   (19.12.2007 в 21:46)
 

точно int(10) - возможно раньше было tinyint, так как подобная ошибка у меня уже была и тогда я как раз и менял tinyint на int

   
 
 автор: Faraon   (19.12.2007 в 22:11)   письмо автору
 
   для: Dizels   (19.12.2007 в 21:58)
 

А как Вы меняли? Через какого клиента?

   
 
 автор: Dizels   (19.12.2007 в 22:31)   письмо автору
 
   для: Faraon   (19.12.2007 в 22:11)
 

phpmyadmin

   
 
 автор: Faraon   (19.12.2007 в 22:43)   письмо автору
 
   для: Dizels   (19.12.2007 в 22:31)
 

Попробуйт cделать запрос, можно и через PhpMyAdmin

ALTER TABLE `biograf_artpage` CHANGE `id_artpage` `id_artpage` INT(10) NOT NULL AUTO_INCREMENT

   
 
 автор: Dizels   (19.12.2007 в 23:11)   письмо автору
 
   для: Faraon   (19.12.2007 в 22:43)
 

запрос выполнен успешно.

Но проблема осталась.


Добавлено:

Чего-то тут вообще фигня какая-то - в базе я вижу только 50 записей, а на самом сайте около 120 :) как такое может быть?

   
 
 автор: cheops   (20.12.2007 в 00:53)   письмо автору
 
   для: Dizels   (19.12.2007 в 23:11)
 

Столбец типа AUTO_INCREMENT при удалении значения не пересчитывается и пробелов не заполняет (так быстрее получается) - в результате достаточно вам 120 раз выполнить INSERT-запрос и значение столбца, снабжённого атрибутом AUTO_INCREMENT достигает значения 120, даже если в таблице осталась одна единственная запись или вообще никаких записей не осталось.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования