Passage Mysql 4 vers Mysql 5

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Passage Mysql 4 vers Mysql 5

par Hubert Roksor » 23 juin 2006, 21:25

Tu noteras que j'ai dit que c'était une mauvaise idée, pas que c'était la tienne :lol:

À priori, si ce n'est pas à toi de maintenir l'application alors contente-toi de modifier le mode SQL, ça devrait fonctionner. Note que tu peux le modifier globalement ou uniquement pour la connexion utilisée, afin d'utiliser sur le même serveur des applications compatibles et d'anciennes appli.

par Cobaye » 23 juin 2006, 21:00

suis pas à l'origine du code ! dans tout mes dev y a pas de chaine vide pour un incrément

par Hubert Roksor » 23 juin 2006, 18:53

Sans vouloir remuer le couteau dans la plaie, donner une chaîne vide pour un champs auto-incrémenté n'était pas une très bonne idée dès le départ :roll: Parfois on se moque de moi parce que je suis extrêmement strict sur la façon de programmer, mais sur le long terme ça évite ce genre de problèmes.

Idéalement, je te conseillerais de modifier tes requêtes comme le suggère zeus. Tu peux aussi remplacer '' par NULL ou même 0. Sinon, voici d'autres pistes, par ordre de facilité:
  • changer le mode SQL de ton serveur pour enlever STRICT_ALL_TABLES et STRICT_TRANS_TABLES. Ça devrait changer l'erreur en warning
  • créer un TRIGGER (BEFORE INSERT) pour remplacer la chaîne vide par 0 ou NULL
J'en avais une autre mais elle m'est sortie de tête :o

par Cobaye » 23 juin 2006, 16:37

c'est pas un prob de table corrompu puisqu'elle est créer juste avant cette requete insertion ! si je met pas le champ auto-incrément dans la requete ca marche !

le prob c'est que j'ai des centaines de pages de scripts à revoir du coup !

par zeus » 23 juin 2006, 12:16

Il me semble que, sous MySQL 5, pour qu'un id soit rempli automatiquement, il ne faut pas le citer et il sera pris en charge automatiquement par le SGBD.

Code : Tout sélectionner

INSERT INTO user(id_groupe_user,login_user,passwd_user,prenom,nom,email,en_ligne,language) VALUES ('1','admin','3902adc1e543dee103f3363f54bbb','Olivier','LE CORRE','[email protected]','1','fr')
Sinon, ton message d'erreur me fait penser à celui qui est retourné quand une table est corrompue :-k

Est-ce que tu y accèdes en lecture ?

Passage Mysql 4 vers Mysql 5

par Cobaye » 23 juin 2006, 10:42

Bonjour,

j'ai une requête sql

Code : Tout sélectionner

INSERT INTO user(id_user,id_groupe_user,login_user,passwd_user,prenom,nom,email,en_ligne,language) VALUES ('','1','admin','3902adc1e543ec9a103f3363f54bbb','Olivier','LE CORRE','[email protected]','1','fr')


qui fonctionne sous Mysql 4, or la base de données vient de passer sous Mysql 5 et la requête ne fonctionne plus

Code : Tout sélectionner

Erreur: (1264) Out of range value adjusted for column 'id_user' at row 1
Diffile de me tapper toutes l'applications pour rendre les requetes compatibles, comment faire marcher cette requete sous mysql 5 ?

la conf de mysql 5 est celle par défaut