Aller au contenu

ARCHIVE FORUM FILMOTECH

)) Retour au nouveau forum ((

INFORMATION IMPORTANTE

Suite à la mise à jour à venir du site (mise en ligne prévue avant la fin du mois), ces forums seront bientôt archivés et il ne sera plus possible d'y contribuer.
Vous devrez vous inscrire sur les nouveaux forums quand ils seront disponibles. Les conversations en cours devront continuer dans le nouveau forum.

Désolé pour ce changement

Problème avec MySql

Bonjour,
Je n'arrive plus à faire la mise à jour de mon site.
L'assistant de publication est correctement paramétré.
Lorsque je veux effectuer le transfert, les affiches sont correctement transférées dans le répertoire "affiches", mais la base de données mysql ne se met pas à jour.
Aucune erreur affichée à la fin du transfert.
Serveur apache Ubuntu 18.04
mysql V 5.0.12
php 7.2.19

MySql est pleinement opérationnel car mon site fonctionne parfaitement puisqu'il affiche les films déjà enregistrés.

Pour en terminer avec les diags, j'ai d'autres scripts php qui utilisent mysql sur ce même serveur sans soucis.

Une idée ?

Réponses

  • FilmotechFilmotech Administrator
    Bonjour,

    As-tu changé la version de MySQL depuis la dernière publication ?
    Eventuellement, si tu as la possibilité d'activer l'affichage des erreurs PHP sur ton serveur, ça pourrait retourner des informations complémentaires.
  • Oui, je suis passé de sql 5.5 (Ubuntu 14) vers la 5.7 (Ubuntu 18)

    Autre test : j'ai vidé la base de donnée Filmotec sur mon serveur, et à la synchro depuis l'appli, aucune table n'est créée.
    Par contre, avant de tout vider, l'appli Filmotec lit parfaitement le contenu de la BDD mysql.

  • FilmotechFilmotech Administrator
    Il me semble qu'il peut y avoir un souci sur les dates avec les versions plus récentes de MySQL (flag NO_ZERO_DATE qui permet d'avoir des dates 0000-00-00 au lieu de NULL)

  • C'est ce que je pense aussi après avoir ecumé les forums MySql. Mais n'y connaissant absolument rien en terme de codage SQL, que puis-je faire ?
  • Bon j'ai modifié les 3 champs dans mysql :
    - DateHeureMAJ -> Valeur par défaut : 2010-01-01 00:00:01
    - EntreeDate et SortieDate -> Valeur par défaut : 2010-01-01

    Idem dans le fichier api.php au niveau de la fonction : "create_table_mysql"

    Résultat. Rien de changé. Aucune mise à jour de la base mysql.

    Suppression des tables mysql.
    La création de la table fmt_films ne se fait pas.



  • FilmotechFilmotech Administrator
    As-tu la possibilité de re-tester en MySLQ 5.5 ?

    Sinon, tu peux aussi essayer d'exécuter la requête de création des tables dans phpMyAdmin, pour voir s'il y a un message d'erreur particulier.
  • Je n'ai plus de serveur de 5.5

    J'ai une relation qui parle courament SQL.
    Je vais lui soumettre le script.
    Entre la 5.5 et la 5.7, j'ai récemment appris qu'il y avait des différences avec la fonction d'envoi vers la base.

  • FilmotechFilmotech Administrator
    J'ai prévu de faire évoluer la publication pour remettre à jour le code avec les dernières versions PHP/MySQL, mais ca ne sera pas avant quelques mois, si je trouve le temps ;) 
  • depuis la restauration de ma base dans un nouveau profil je ne peux plus ajouter ou modifier un film  message erreur 

    erreur connexion a la base erreur code 8  SQL
    QUE FAIRE
  • lunsdalelunsdale Member
    Modifié (août 2019)
    Bonjour,

    je viens de créer un compte pour répondre sur le forum après être tombé sur votre problème par hasard.
    Donc j'en profite pour vous dire bonjour :smile: 

    J'avais le même problème que vous tous.

    Pour info, mais sans conséquence car ça marchait pareil quand j'étais en MySQL 5.5 : MySQL 5.8 sous Debian Buster

    j'ai trouvé, après quelques heures de debug.
    Voici la DB initiale :
    MariaDB [filmotech]> show columns from fmt_films;
    +--------------------+--------------+------+-----+---------------------+-------+
    | Field              | Type         | Null | Key | Default             | Extra |
    +--------------------+--------------+------+-----+---------------------+-------+
    | ID                 | bigint(20)   | NO   | PRI | NULL                |       |
    | DateHeureMAJ       | datetime     | NO   |     | 0000-00-00 00:00:00 |       |
    | TitreVF            | varchar(255) | NO   | MUL |                     |       |
    | TitreVO            | varchar(255) | NO   |     |                     |       |
    | Genre              | varchar(50) | YES  |     | NULL                |       |
    [...]

    Après avoir scanné les trames http, et récupéré les requêtes envoyées lors de la publication, il s'avère que la taille du champs Genre dans la base de données est trop petit et bloque toutes les entrées qui suivent la première qui n'arrive pas à s'insérer dans la base.
    La solution est d’agrandir le champs Genre de la DB :

    alter table fmt_films modify Genre varchar(100);

    Voici la DB après :
    MariaDB [filmotech]> show columns from fmt_films;
    +--------------------+--------------+------+-----+---------------------+-------+
    | Field              | Type         | Null | Key | Default             | Extra |
    +--------------------+--------------+------+-----+---------------------+-------+
    | ID                 | bigint(20)   | NO   | PRI | NULL                |       |
    | DateHeureMAJ       | datetime     | NO   |     | 0000-00-00 00:00:00 |       |
    | TitreVF            | varchar(255) | NO   | MUL |                     |       |
    | TitreVO            | varchar(255) | NO   |     |                     |       |
    | Genre              | varchar(100) | YES  |     | NULL                |       |
    [...]

    On peut aussi, lors d'une install toute neuve, modifier le fichier rest/api.php en remplaçant l'entrée :
    . "Genre varchar(50) default '',"
    par
    . "Genre varchar(100) default '',"

    Ou (solution de facilité mais non pérenne) : raccourcir le contenu du champs Genre avant publication à 50 caractères (ce qui est spécifié dans la base au départ et à sa création) sans rien changer dans le fichier api.php, mais ne pas venir se plaindre qu'on a oublié plus tard et que le problème recommence :)

    De même si ça bloque encore, c'est un autre champs qui n'a pas assez de place pour recevoir la donnée qui lui est fournie.

    Voilà, si ça a pu vous débloquer ;)

    Bye
  • Bien tenté, mais ça ne fonctionne toujours pas.
  • Bonjour

    même souci de publication, affiches correctement transférées mais la base de données
    ne se met pas à jour...
    ma config Mojave 10.14.6
    MAMP 5.3, Mysql : 5.7.25 MySQL Community Server (GPL), PHP 7.3.1
    Mysql opérationnel sur d'autres bases.

    Cordialement

  • GoudurixGoudurix Member
    Modifié (octobre 2019)
    Avec une aide extérieure, voici les messages d'erreur :
    Deprecated : Methods with the same name as their class will not be constructors in a future version of PHP; Services_JSON has a deprecated constructor in /Applications/MAMP/htdocs/filmotech/rest/json.inc.php on line 113

    Deprecated : Methods with the same name as their class will not be constructors in a future version of PHP; Services_JSON_Error has a deprecated constructor in /Applications/MAMP/htdocs/filmotech/rest/json.inc.php on line 779

    Deprecated : Methods with the same name as their class will not be constructors in a future version of PHP; Services_JSON_Error has a deprecated constructor in /Applications/MAMP/htdocs/filmotech/rest/json.inc.php on line 793

    A priori, c'est plus un soucis de PHP que MySql
  • FilmotechFilmotech Administrator
    Je dois ré-écrire la partie publication, il faut juste que je trouve le temps de le faire. L'éditeur du logiciel que j'utilise à modifié pas mal de chose, donc je dois d'abord mettre à jour tout le code (!) actuel avant de pouvoir avancer sur la publication... :(
Connectez-vous ou Inscrivez-vous pour répondre.

© 2004-2023 Pascal PLUCHON

Retour au nouveau forum