Login Retreive lost passwordRegister
Search

Forum Index / NL Forum / Bug detectie samengestelde primary key?

[ This topic is solved ]

  winus 05 May 09 / 20:04  
Hallo, ik heb een tabel (innodb) met een primary key over 3 velden.

Er staan nu zo'n 3500 items in, die uit een conversie komen. Het editen gaan prima.
Maar het nieuw toevoegen gaat mis.

De combinatie van de velden "weblog_id, weblog_domain_group, weblog_lang_id" moet uniek zijn. Deze combinatie staat al in de database! (Overtreding van index "PRIMARY")

weblog_domain_group en weblog_lang_id worden vanuit formhandler meegegeven, beide waarde = 1.
weblog_id is auto-increment.

Wie helpt mij weer op gang :D?

  winus 05 May 09 / 20:27  
Misschien ook nog handig

CREATE TABLE `weblog` 
(
  `weblog_id` int(11) NOT NULL AUTO_INCREMENT,
  
`weblog_catagory` int(11) NOT NULL DEFAULT '0',
  
`weblog_title` varchar(250) NOT NULL DEFAULT '',
 
`weblog_content` text,
  `weblog_content2` text,
  
`weblog_author` varchar(50) NOT NULL DEFAULT '0',
  
`weblog_datein` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  
`weblog_views` bigint(20) NOT NULL DEFAULT '0',
  
`weblog_bron` text,
  
`weblog_lang_id` int(11) NOT NULL DEFAULT '1',
  
`weblog_domain_group` int(11) NOT NULL DEFAULT '1',
 
`weblog_reaction` int(1) NOT NULL DEFAULT '1',
  
`weblog_poll` int(11) DEFAULT NULL,
  
PRIMARY KEY (`weblog_id`,`weblog_domain_group`,`weblog_lang_id`),
  
KEY `weblog_lang_id` (`weblog_lang_id`),
  
KEY `weblog_domain_group` (`weblog_domain_group`),
  
KEY `datein` (`weblog_datein`),
  
KEY `catagory_2` (`weblog_catagory`,`weblog_lang_id`,`weblog_domain_group`),
  
KEY `fk3` (`weblog_poll`),
  
KEY `index2` (`weblog_id`,`weblog_lang_id`,`weblog_domain_group`),
  
CONSTRAINT `weblog_fk` FOREIGN KEY (`weblog_domain_group`) REFERENCES `domain_group` (`group_id`),
  
CONSTRAINT `weblog_fk1` FOREIGN KEY (`weblog_lang_id`) REFERENCES `languages` (`language_id`),
  CONSTRAINT `weblog_ibfk_1` 
FOREIGN KEY (`weblog_poll`) REFERENCES `poll` (`poll_id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=3834 DEFAULT CHARSET=utf8

  Johan Wiegel (Admin) 06 May 09 / 13:05  
Winus,

Wat is de reden voor een primary key van 3 velden waarvan een autoincrement is?
Waarom niet alleen op de autoincrement een primary key.

Je hebt over deze drie velden ook al een index gelegd.

  winus 06 May 09 / 14:42  
Het waren eerst 3 losse databases op verschillende sites en talen, dus er zitten gelijke keys op het autoincrement veld en na de conversie willen we geen dode/niet goed verwijzende links krijgen. We kunnen ze dus niet opnieuw nummeren.

die `index2` zag ik gisteren ook pas, die hoort er niet (a).

  Johan Wiegel (Admin) 07 May 09 / 13:48  
Ik denk toch dat je verkeerde indexen en primary key gebruikt.

Zie dit ook niet als een manco van FormHandler.
Als je deze tabel structuur aan wilt houden zou ik voor het toevoegen van een nieuwe entry geen dbFormHandler gebruiken, maar FormHandler en de database afhandeling zelf regelen.

  winus 07 May 09 / 14:18  
Changed at 07 May 09 / 14:18
Oke...

Vind het alleen beetje vreemd dat je het afdoet als 'geen probleem in formhandler'. Feit blijft dat een losse insert query met dezelfde data gewoon werkt, en ik zie het wel als een probleem in formhandler.

Maargoed ik ga wel gewoon query'en...

  Top


powered by PHP-GLOBE   © 2004 - 2012 FormHandler. All rights reserved.   -   Open source license