Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: исправить ошибку "Duplicate entry '32550-7487' for key 2"

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
DlTA
Отправлено: 14 Ноября, 2010 - 02:56:29
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




имеется таблица из 5ти полей
|orderid | nalid | note | amount | id |
первое поле ссылка на иную табицу, второе тоже ссылка, потом поле которое не понятно как используется, числовое поле, и ID

ошибка выскакивает когда я пытаюсь обновить первое поле с целью изменить на новое значение,
то есть хочу к примеру в поле `orderid` записать '32550' (было '32551') при этом поле `nalid` имеет значение '7487'
если у меня уже имеется запись в которой `orderid` = '32550' и `nalid` = '7487' то и получаю соответствующую ошибку
поля `ID` у всех записей разные

по инфе с гугла получается что у меня дублирование ключей, но как?!?!
в таблице присутствуют записи в которых многократно повторяются значения первого поля, или второго, но не попарно сразу.
ну и суть вопроса, как это дело исправить?
 
 Top
annihilus
Отправлено: 14 Ноября, 2010 - 03:56:05
Post Id



Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Скорее всего , стоит индекс с уникальным значением на 2 поля.
Исправить естественно можно удалив этот индекс...

это в помощь:
CODE (SQL):
скопировать код в буфер обмена
  1. SHOW KEYS FROM <table name>;
  2. DROP INDEX <index name> ON <table name>;


П.С. я конечно могу ошибаться...

(Отредактировано автором: 14 Ноября, 2010 - 04:07:12)

 
 Top
DlTA
Отправлено: 14 Ноября, 2010 - 09:32:48
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




расшифруете?
1) Table => orderdata|Non_unique => 0|Key_name => PRIMARY|Seq_in_index => 1|Column_name => id|Collation => A|Cardinality => 11163|Sub_part => |Packed => |Null => |Index_type => BTREE|Comment => |
2) Table => orderdata|Non_unique => 0|Key_name => orderid|Seq_in_index => 1|Column_name => orderid|Collation => A|Cardinality => 2232|Sub_part => |Packed => |Null => |Index_type => BTREE|Comment => |
3) Table => orderdata|Non_unique => 0|Key_name => orderid|Seq_in_index => 2|Column_name => nalid|Collation => A|Cardinality => 11163|Sub_part => |Packed => |Null => |Index_type => BTREE|Comment => |
 
 Top
annihilus
Отправлено: 14 Ноября, 2010 - 18:44:23
Post Id



Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Да тут впринцепе должно быть все понятно...
У вас 2 индекса , 1 первичный уникальный на поле id , второй уникальный на 2 поля orderid и nalid с названием orderid.

Что бы вашу ошибку исправить надо сделать вот так:
CODE (SQL):
скопировать код в буфер обмена
  1. DROP INDEX orderid ON orderdata;


а если индекс там всетаки нужен , то можно добавить его вот так:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE INDEX orderid ON orderdata (orderid,nalid);

(Отредактировано автором: 14 Ноября, 2010 - 18:45:04)

 
 Top
JustUserR
Отправлено: 14 Ноября, 2010 - 19:29:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




DlTA пишет:
В таблице присутствуют записи в которых многократно повторяются значения первого поля, или второго, но не попарно сразу
Используемая вами структура информационных полей в таблице БД обеспечивает представление согласно первой нормальной форме - однако обеспечение установки ключевых полей и индексов возможно в случае приведения его к уровню более высокой нормальной форме В качестве возможного решения применимо создания единого ключевого столбца - обеспечвающего в себя включение информации нескольких ранее используемых компонент индексации в строковой формы - с возможность проведения дальнешего поиска посредством вклчения операции строкового разбиения в SQL-запрос


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
DlTA
Отправлено: 16 Ноября, 2010 - 01:41:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




было принято решение не хер...ть имеющуюся систему ключей
а модифицировать количественные поля таблицы

всем спасибо.
 
 Top
JustUserR
Отправлено: 16 Ноября, 2010 - 11:22:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




DlTA В общем случае обеспечение системы индексации возможно в мануальном режиме посредством создание требуемых дополнительных информационных полей - в таком случае внутренене оптимизированное получение компонгентов будет осуществляться по ключевому значению - в то время как выделение параметров может проводиться пользовательской SQL-функцией на стороне сервера БД


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB