Page 1 sur 1

transfer de base de données 5.3 to 7.2.8 error

Posté : 04 janv. 2019, 13:23
par UserB
Bonjour,
je viens de transférer ma base de données sous php 5.3 en service vers une copie sous php 7.2.8 MAMP local pour modifications.
Lorsque j'essaye d'insérer une nouvelle ligne de données dans ma table en local (ALTER TABLE `match_cmpdv` ADD `quote1` INT(1)), mysql me renvoie "#1292 - Incorrect date value: '0000-00-00' for column 'date' at row 1". Je suis tombé sur quelques forums qui demandent de modifier la configuration générale mais les dossiers mentionés n'existent apparemment plus sous 7.2.
Que dois-je faire?
Merci.

Re: transfer de base de données 5.3 to 7.2.8 error

Posté : 04 janv. 2019, 14:49
par @rthur
Bonjour,

Il faudrait déjà déterminer si ton problème vient de PHP ou vient de MYSQL.
Vu le message d'erreur, il s'agit d'un souci de requête MySQL donc il faut que tu testes tes requêtes dans phpmyadmin.

Une requête ALTER TABLE ... ADD ... n'est pas faite pour ajouter une ligne de données mais une colonne.

Vu le message d'erreur, c'est que tu as dans ta table (ou que tu essaye d'insérer) une ligne avec pour valeur 000-00-00 pour la date.
Or depuis MySQL 5.7, cela n'est plus autorisé, il faut donc que tu utilises NULL si tu ne veux pas mettre de date.
Strict mode affects whether the server permits '0000-00-00' as a valid date:

If strict mode is not enabled, '0000-00-00' is permitted and inserts produce no warning.

If strict mode is enabled, '0000-00-00' is not permitted and inserts produce an error, unless IGNORE is given as well. For INSERT IGNORE and UPDATE IGNORE, '0000-00-00' is permitted and inserts produce a warning.

Re: transfer de base de données 5.3 to 7.2.8 error

Posté : 04 janv. 2019, 15:05
par UserB
Oui, pardon, j'ai bien besoin d'ajouter une colonne.
J'ai essayé de faire la requete directement via le sql query et me donne le meme résultat.
J'ai une autre table sur la meme base de données qui elle aussi a une date avec exactement les memes parametres et ne me pose pas de soucis sur la creation de colonne.
???

Re: transfer de base de données 5.3 to 7.2.8 error

Posté : 04 janv. 2019, 15:24
par UserB
nb : je viens de faire un test sur la base de données originale qui elle est toujours sous php5.3 avec exactement les mêmes résultats!

Re: transfer de base de données 5.3 to 7.2.8 error

Posté : 04 janv. 2019, 17:04
par UserB
Remoi, j'ai donc un vrai soucis sur mes colonnes date. Je ne peux rien faire sur la table sauf si j'efface ces deux colonnes ensemble. Je ne peux pas être le seul à avoir ce soucis php 5 / 7... J'ai aussi essayé de modifier la valeur par défaut et rien ne passe. J'ai 50 000 entrées dans cette table et je ne pourrais pas faire une copie manuelle...
Please help.
Merci.

Re: transfer de base de données 5.3 to 7.2.8 error

Posté : 04 janv. 2019, 17:10
par @rthur
Est-ce que tu as des enregistrements où des champs date valent 0000-00-00 dans ta table ?

Si oui, cela n'est plus autorisé donc fait un UPDATE pour les mettre à null

Re: transfer de base de données 5.3 to 7.2.8 error

Posté : 04 janv. 2019, 17:26
par UserB
Oui, j'en ai plein... La fonction date a été ajoutée apres un long moment d'exploitation, du coup , valeur par défaut '0000-00-00' est passée sur tous les éléments du début...
Ce serait donc quoi le code sql pour faire ça ?

Re: transfer de base de données 5.3 to 7.2.8 error

Posté : 04 janv. 2019, 17:37
par @rthur
Ce serait donc quoi le code sql pour faire ça ?
Je ne vais pas le faire à ta place, je t'ai indiqué ce qu'il fallait faire à toi de chercher un peu ;-)

Re: transfer de base de données 5.3 to 7.2.8 error

Posté : 04 janv. 2019, 23:03
par UserB
Il ya chercher un peu et puis chercher beaucoup, cela commence à me rendre dingue! Je suis en train de remplir la base via code php via requete. Maintenant, ma requete php est incapable de reconnaitre les 2 parametres de date de la base de données, ainsi, j'arrive bien a remplacer les 0000-00-00 et cela fonctionne, par contre , il en profite pour ecraser les valeurs avec... Je lui ai pourtant bien demandé ça :

for ($i = 1; $i <= 55000; $i++) {
$sql='SELECT * FROM match_cmpdv WHERE ID_match="'.$i.'"';
$reponse = $dbh->query($sql);
while ($donnees = $reponse->fetch())
{
if($donnees[dateCM]=="0000-00-00"){
$prepReq ='UPDATE match_cmpdv SET dateCM ="1970-01-01" WHERE ID_match="'.$donnees[ID_match].'"';
$action = $dbh->query($prepReq);

}
};
$reponse->closeCursor();
};
echo 'done';

Bref, je me rends compte que tous les variables sont prise en compte excepté les 2 variables qui m'interressent : les dates qui me renvoient invariablement 0000-00-00.

Re: transfer de base de données 5.3 to 7.2.8 error

Posté : 04 janv. 2019, 23:29
par @rthur
Tu peux faire cela en pur SQL, sans passer par PHP.
Comment ferais tu un SELECT de toutes les enregistrements qui ont pour date 0000-00-00 ?

Une fois que tu as cette requête, tu as juste à remplacer SELECT par UPDATE, et à indiquer ce que tu veux changer en l’occurrence SET champ_date=NULL (pourquoi mettre une date en 1970 si tu peux utiliser NULL ?)

Et attention à bien conserver le WHERE de ton SELECT bien sûr sinon tu vas mettre à jour tous les enregistrements de ta table ^^

Re: transfer de base de données 5.3 to 7.2.8 error

Posté : 05 janv. 2019, 00:06
par UserB
HOUHOUHOUU!
Ça y est !
En plus pour tout arranger, j'avais une colonne dans ma table qui s'appelait date qui du coup était pris en compte comme du code et pas comme un nom... Bref, on va finir la journée la dessus! Ma table semble propre, ok et compatible php7... Merci @rhur pour tes éclairages et tes encouragements.

Re: [RESOLU] transfer de base de données 5.3 to 7.2.8 error

Posté : 05 janv. 2019, 00:38
par @rthur
:-D