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

ArthurT -  
 ArthurT -
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



A voir également:

8 réponses

AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
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
ArthurT
 
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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
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
ArthurT
 
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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
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
ArthurT
 
Oui à toutes ces questions, j'ai vérifié par rapport aux données existantes
0
ArthurT
 
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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Désolé de ne pas avoir pu plus t'aider :s
0
ArthurT
 
Ben ça a déjà été très gentil à toi d'essayer de m'aider. Maintenant va falloir que je refasse mon Trigger
0
ArthurT
 
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