Problème SQL - Column count doesn't match...

Fermé
ArthurT - 8 févr. 2012 à 12:44
 ArthurT - 8 févr. 2012 à 17:17
Bonjour,

Je suis en train de m'occuper de la base de données pour un projet de réseau social, et j'ai quelques soucis avec le SQL apparemment.

Je dispose d'une table "organization_" avec comme colonnes : organizationId (Primary key), comapnyId, parentOrganizationId, treePath, name, type_, recursable, regionId, countryId, statusId, comments. Si je compte bien, ça en fait donc 11.
Le problème que j'ai : alors que j'essaie d'entrer des valeurs pour tester ma base de données, c'est à dire :
INSERT INTO organization_ VALUES (902134, 1406, 0, '/902134/', 'TestCompany', 'company', 1, 0, 0, 0, '');

je reçois le code d'erreur suivant :
#1136 - Column count doesn't match value count at row 1


Pourtant j'ai bien vérifié et revérifié que tout collait au niveau du nombre de colonnes, j'en insère bien 11.

Est-il possible qu'un Trigger dérange la table ?
Voici les deux Triggers que j'applique à cette table :
delimiter |
CREATE TRIGGER addToW_table2 AFTER INSERT ON organization_
FOR EACH ROW BEGIN
	INSERT INTO w_organization_ VALUES(NEW.organizationId, null);
	INSERT INTO Actors_ (uAid_) (SELECT uAid_ FROM w_user_);
	INSERT INTO Actors_ (uAid_) (SELECT uAid_ FROM w_organization_);
END;
|
delimiter ;

delimiter |
CREATE TRIGGER deleteOrg AFTER DELETE ON organization_
FOR EACH ROW BEGIN
	DELETE FROM w_organization_ WHERE organizationId = OLD.organizationId;
 	DELETE FROM Actors_ WHERE uAiD_ = (SELECT w_organization_.uAiD_ FROM w_organization_ w, organization_ o WHERE OLD.organizationId = w.organizationId);
END;
|
delimiter ;



Quelqu'un pourrait-il m'aider à résoudre ce problème rapidement ?
D'avance, grand merci à lui,
Cordialement,
ArthurT



8 réponses

AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
8 févr. 2012 à 14:29
Bonjour,

Si tu enlèves/ajoutes une colonne dans ton INSERT, tu as toujours une erreur ?

Sinon, j'ai bien envie de te dire que la syntaxe est mauvaise puisqu'il manque une partie de la requête, comme expliqué ici => http://sql.1keydata.com/fr/sql-insert-into.php
0
Bonjour AssassinTourist, et merci pour ta réponse.
Oui, en enlevant ou en rajoutant une colonne, cela ne fonctionne toujours pas.
J'ai également déjà essayé avec la syntaxe complète comme ceci:
INSERT INTO organization_(organizationId, companyId, parentOrganizationId, treePath, name, type_, recursable, regionId, countryId, statusId, comments)
VALUES (902134, 1406, 0, '/902134/', 'TestCompany', 'company', 1, 0, 0, 0, '');

Cela ne fonctionne pas non plus. Voilà pourquoi j'ai un problème
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
8 févr. 2012 à 15:15
Ah j'ai vu !

Dans ta colonne treePath, tu mets '/902134/' !
Or /' va juste lui dire qu'il faut prendre ' comme une apostrophe simple et non comme une fin de colonne. Je ne sais plus exactement comment résoudre le problème... je crois que faire '/902134//' fonctionne
0
Ah, bien vu. Mais il semble que là n'est pas le problème, car j'ai toujours la même erreur...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
8 févr. 2012 à 15:31
Ah non, j'ai confondu avec le backslah qui, lui, pose problème...

Est-ce que parentOrganizationId et comments peuvent être vides dans ta base ? Sinon, si tu changes la valeur, tu as encore l'erreur ?

Es-tu certain que le type de tes colonnes correspond à ce que tu lui donnes ?
0
Oui à toutes ces questions, j'ai vérifié par rapport aux données existantes
0
Problème résolu : C'était effectivement le trigger qui cassait tout. Je l'ai enlevé et tout remarche. C'est vraiment dommage, je pensais avoir compris comment fonctionnent les Triggers...

Merci beaucoup pour ton aide ;-)
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
8 févr. 2012 à 16:36
Désolé de ne pas avoir pu plus t'aider :s
0
Ben ça a déjà été très gentil à toi d'essayer de m'aider. Maintenant va falloir que je refasse mon Trigger
0
J'ai réussi à isoler le problème je crois.
Seul soucis, je ne vois vraiment pas comment le résoudre.
Voilà le trigger, après quelques modifications :
delimiter |
CREATE TRIGGER addToW_table2 AFTER INSERT ON organization_
FOR EACH ROW BEGIN
	INSERT INTO w_organization_ (organizationId, uAid_) VALUES (NEW.organizationId, 0);
  INSERT INTO Actors_ (uAid_) (SELECT wu.uAid_ FROM w_organization_  wu, Actors_ a WHERE wu.organizationId=NEW.organizationId);
END;
|
delimiter ;


Le problème est que, quand j'entre une nouvelle organization_, je reçois une erreur encore plus bizarre :

INSERT INTO Actors_ (SELECT wu.uAid_ FROM w_organization_ wu, Actors_ a WHERE wu.organizationId=902100 AND (SELECT COUNT(uAid_) FROM Actors_ a WHERE a.uAid_=wu.uAid_)=0)

Duplicate entry '100019' for key 'PRIMARY'
[Error Code: 1062]
[SQL State: 23000]


J'ai évidemment vérifié, et ce n'est pas le cas, il n'y a aucune entrée avec 100019 comme Pimary Key dans Actors_ (puisque ce qu'est ici cette ligne du Trigger qui pose un problème, j'ai pu le vérifier manuellement).
Le fait qu'il y ait un AUTO_INCREMENT sur le uAid_ dans w_organization_ peut-il avoir un impact sur ceci ?
Comment résoudre ce problème ? C'est bien étrange comme cas je trouve...
0