Forum

Welcome to ProjeQtOr new Forum. We migrated old forum to the new website.
You will find all your posts here, with your usual account.
Just one point : you’ll have to reinitialize your password. Use “Lost password” feature.

Support de l'autoco...
 
Notifications
Clear all

Support de l'autocommit = 0 ?

12 Posts
2 Users
0 Reactions
9,671 Views
(@lordfpl)
Posts: 6
Active Member
Topic starter
 
[#862]

Bonjour à tous,

Après quelques prises de têtes à comprendre pourquoi j'avais cette erreur :

2012-12-20 08:56:11 ** ERROR ** Exception-[42S02] SQLSTATE[42S02]: Base table or view not found: 1146 Table 'projectorria.parameter' doesn't exist
2012-12-20 08:56:11 ** ERROR ** For query : select * from parameter where (idUser is null and idProject is null)
2012-12-20 08:56:11 ** ERROR ** Strack trace :
2012-12-20 08:56:11 ** ERROR ** #0 Sql->query called at [/model/persistence/SqlElement.php:1133]
2012-12-20 08:56:11 ** ERROR ** #1 SqlElement->getSqlElementsFromCriteria called at [/model/Parameter.php:447]
2012-12-20 08:56:11 ** ERROR ** #2 Parameter->getGlobalParameter called at [/view/login.php:121]
2012-12-20 08:56:11 ** ERROR ** #3 include called at [/tool/projector.php:118]
2012-12-20 08:56:11 ** ERROR ** #4 require_once called at [/view/main.php:10]

J'ai enfin compris que ma base de données ayant un autocommit désactivé par defaut (mode transactionnel privilégié), une opération se déroulait mal car la table créé précédement et qu'il s'attendait à trouver n'avait pas été "commitée" 😉

Pour le moment j'ai solutionné le problème via une solution quick & dirty :

for i in db/*.sql; do sed -i '1iSET AUTOCOMMIT = 1;' $i; done

Pour les prochaines version, un p'tit commit par ci par là serait peut être le bienvenu non ? 😉

Merci en tout cas pour tout le travail effectué sur cette solution 🙂


 
Posted : 20 Dec 2012 11H35
(@lordfpl)
Posts: 6
Active Member
Topic starter
 

Je me répond à moi pour ajouter que finallement l'utilisation semble problématique dans ce type de mode : l'insertion auto d'utilisateur ldap "marchotte"... id user renseigné dans le parameters... mais pas dans resource 🙁


 
Posted : 20 Dec 2012 12H28
babynus
(@babynus)
Posts: 14954
Main Contributor Admin
 

ldap "marchotte"... id user renseigné dans le parameters... mais pas dans resource

C'est normal.
Quand une nouvelle personne se connecte à l'application via LDAP, elle est insérée en base en tant qu'utilisateur (user) : elle peut se connecter.
Pour que cette personne devienne une ressource, et puisse être affectée, saisir du temps passé, il faut une intervention manuelle d'un manager (admin, CP,...) pour que l'utilisateur soit aussi une ressource : aller dans l'écran des utilisateurs et cocher "est une ressource".


 
Posted : 20 Dec 2012 13H34
babynus
(@babynus)
Posts: 14954
Main Contributor Admin
 

Pour les prochaines version, un p'tit commit par ci par là serait peut être le bienvenu non ?

Ticket #937 pour ajouter la gestion des commits dans les scirpts de maintenance.


 
Posted : 20 Dec 2012 13H38
(@lordfpl)
Posts: 6
Active Member
Topic starter
 

ldap "marchotte"... id user renseigné dans le parameters... mais pas dans resource

C'est normal.
Quand une nouvelle personne se connecte à l'application via LDAP, elle est insérée en base en tant qu'utilisateur (user) : elle peut se connecter.
Pour que cette personne devienne une ressource, et puisse être affectée, saisir du temps passé, il faut une intervention manuelle d'un manager (admin, CP,...) pour que l'utilisateur soit aussi une ressource : aller dans l'écran des utilisateurs et cocher "est une ressource".

Merci beaucoup pour le retour 🙂
Par contre autant je confirme la manipulation à faire pour déclarer une nouvelle personne après sa connexion en ldap... autant je confirme également qu'il y a un p'tit bug puisque l'utilisateur en question n'apparait pas dans la liste des utilisateurs 🙁
(alors que dans la base de données, si il modifie ses informations, ces dernières sont bien sauvegardées avec un id dans la table parameter).

Quel est le fichier responsable de l'ensemble des fonctions sql ?
Théoriquement il suffit (après je sais que c'est toujours facile à dire les "ya ka fo kon") de mettre une ligne "$mysqli->autocommit(TRUE);" ou équivalent lors de l'établissement de la connexion à la base.


 
Posted : 20 Dec 2012 13H59
babynus
(@babynus)
Posts: 14954
Main Contributor Admin
 

mettre une ligne "$mysqli->autocommit(TRUE);"

Ce n'est pas à faire systématiquement parce que les mises à jour sont (normalement) transactionnelles.

La partie mise à jour LDAP a peut-être été oubliée.
C'est dans /model/user.php.
Ticket #939 enregistré.


 
Posted : 20 Dec 2012 17H37
(@lordfpl)
Posts: 6
Active Member
Topic starter
 

Merci pour tout 🙂

A tout hasard... auriez vous une solution "propre" pour corriger ce problème ? Comme je suis en phase de test avec ce produit, j'ai encore opté pour une solution very very dirty : donner les droits SUPER au user de projectorria... comme l'autocommit était appliqué via un innit_connect... ça marche :p
Par contre, c'est évidemment super horrible d'un point de vue sécurité...
J'ai tenté de relire le fichier user.php... et n'étant pas codeur php (et encore moins php en mode objet...), j'avoue qu'il m'a un peu piqué les yeux 🙁
Si jamais vous avez une idée de patch plus propre, je suis preneur... sinon tant pis, j'attendrai comme tout le monde qu'une prochaine release corrige ce problème 🙂

Merci encore et excellentes fêtes de fin d'année 😀


 
Posted : 21 Dec 2012 13H50
babynus
(@babynus)
Posts: 14954
Main Contributor Admin
 

Essayez la classe jointe, adaptée. B)
Attention : code non testé .... :unsure:


 
Posted : 21 Dec 2012 15H41
(@lordfpl)
Posts: 6
Active Member
Topic starter
 

Merci beaucoup d'avoir pris le temps de proposer une solution 🙂
Malheureusement, ça ne marche pas :

2012-12-22 18:07:45 ** ERROR ** ERROR **
2012-12-22 18:07:45
** ERROR ** on file '(...)/model/User.php' at line (651)
2012-12-22 18:07:45
** ERROR ***** cause = stripos() expects parameter 1 to be string, resource given

Etant en congés pendant une semaine... et j'imagine que de votre côté vous avez aussi surement d'autre priorités, on verra tout ça l'année prochaine, si je trouve une solution plus propre, je vous tiens au courant 🙂

Bonnes fêtes 😀


 
Posted : 22 Dec 2012 20H10
babynus
(@babynus)
Posts: 14954
Main Contributor Admin
 

Très étrange : le même genre de code se trouve dans tous les /tool/save*.php...
Je jetterai un oeil à l'occasion.

En attendant, en replaçant

					if (stripos($resultSaveUser,'id="lastOperationStatus" value="OK"')>0 ) {
            Sql::commitTransaction();
					} else {
						Sql::rollbackTransaction();
					}									

par

//					if (stripos($resultSaveUser,'id="lastOperationStatus" value="OK"')>0 ) {
            Sql::commitTransaction();
//					} else {
//						Sql::rollbackTransaction();
//					}									

(on commite systématiquement),
ça devrait marcher...

Bonnes fêtes ! :cheer:


 
Posted : 22 Dec 2012 20H41
(@lordfpl)
Posts: 6
Active Member
Topic starter
 

Si c'est pas honteux... répondre un samedi... fin de journée... et ainsi me tenter le test ! 😉
En effet, en ne laissant que le commit, c'est sur que ça fonctionne 🙂 (en tout cas après quelques tests rapides)
A voir sur le long terme, mais dans tous les cas merci beaucoup pour ce suivi assidu à des heures pas possible (oui je suis pas mieux dans l'histoire :p)

@ l'année prochaine 😀


 
Posted : 22 Dec 2012 23H10
babynus
(@babynus)
Posts: 14954
Main Contributor Admin
 

Il n'y a pas d'heure pour les braves !
:whistle:

Joyeuses fêtes !


 
Posted : 23 Dec 2012 2H09
Share:

Scroll to Top