Installation composant et problème MariaDB

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Installation composant et problème MariaDB

    Bonjour à tous,

    J'ai installé JOOMLA 4 sans difficulté pour un site en construction.

    J'en suis à installer un composant personnel qui fonctionnait normalement sous JOOMLA 3.9.26

    J'ai updaté le fichier XML situé à la racine du composant et il s'affiche normalement sur mon PC.

    Par contre, lors de l'installation du composant sur le site en construction sous JOOMLA 4, j'ai un message d'erreur :
    You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DEFAULT CURRENT_TIMESTAMP(), `publish_up` TIMESTAMP NOT NULL DEFAULT CU...' at line 36

    J'ai donc consulté la doc MariaDB, procédé à différentes modifications,mais le problème persiste.

    Voici la partie de mon fichier XML qui pose problème :

    `ordering` int(11) NOT NULL DEFAULT '0',
    `created_by` int(10) unsigned NOT NULL DEFAULT '0',
    `created_by_alias` varchar(255) NOT NULL,
    `created_time` DEFAULT CURRENT_TIMESTAMP(),
    `publish_up` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `publish_down` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `modified_by` int(10) unsigned NOT NULL DEFAULT '0',
    `checked_out` int(10) unsigned NOT NULL DEFAULT '0',
    `checked_out_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

    Merci par avance de votre aide.

    Cordialement

    Philippe

  • #2
    Bonjour,

    Sauf erreur de ma part, il manque TIMESTAMP NOT NULL après 'created_time'.

    Pascal
    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #3
      Bonjour,

      Les valeurs par défaut pour les dates et pour checked out doivent être "null", voir par exemple la structure de la table #__content

      Pour compléter ma réponse. Pour checked_out par exemple, si une valeur numérique est trouvée, Joomla! 4 considère que l'élément est verrouillé, il ne sera considéré comme libre que si le champ contient null. Il faut donc modifier la valeur par défaut et autoriser cette absence de valeur, sinon le déverrouillage par Joomla! ne pourra se faire.
      J'ai vécu ça avec l'auteur d'AppointmentBooking pro lorsque je l'avais poussé à rendre son extension compatible J4.
      Dernière édition par RobertG à 15/03/2022, 09h53
      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

      Commentaire


      • #4
        Hello.

        Remplace :
        `created_time` DEFAULT CURRENT_TIMESTAMP(),
        par
        `created_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

        (surtout supprime les parenthèses).

        Il faut s'avoir que Joomla4 est beaucoup plus rigoureux sur les valeur par défaut
        et les différentes valeurs.
        Ne pas donner une valeur à un champ alors qu'il n'y a pas de valeur par défaut posera problème.
        Idem, mettre une chaine vide dans un numérique coincera aussi lors du store par exemple.

        Passer un composant de J3.x à J4 nécessite un bon 'ménage' au niveau de l'accès et mise à jour de à la base et des tests en profondeur.
        A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
        Rejoignez le Joomla Users Groupe Alsace...
        roland_d_alsace va-t-il devenir roland_du_grand_est ?

        Commentaire


        • #5
          Bonjour,

          Merci pour votre aide.

          Néanmoins, le problème demeure entier.

          Pour ce qui suit, la table SQL est bien installée à chaque tentative d’installation de mon composant dans la BDD qui est pourtant rejeté.

          Aussi, avant chaque nouvelle tentative d’installation du composant, je vire la table correspondante de la BDD.

          Mes tentatives donnent les résultats suivants pour le champ CREATED_TIME qui pose problème.

          Avec TIMESTAMP NOT NULL comme argument, j’ai le message suivant :
          JInstaller: :Install: erreur SQL Field 'created_time' doesn't have a default value

          Avec TIMESTAMP DEFAULT CURRENT_TIMESTAMP comme argument, j’ai le message suivant
          JInstaller: :Install: erreur SQL Field 'created_time' doesn't have a default value

          Sous Joomla 4.0, pour le composant CONTENT, le fichier d’installation SQL du composant CONTENT indique pour CREATED l’argument « datetime NOT NULL »

          Par analogie, j’ai repris dans mon composant pour le fichier SQL et pour CREATED_TIME l’argument « datetime NOT NULL » et, j’obtiens le message suivant :
          JInstaller: :Install: erreur SQL Field 'created_time' doesn't have a default value

          Avec “datetime CURRENT_TIMESTAMP”, j’obtiens le message suivant :
          You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CURRENT_TIMESTAMP, `publish_up` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, ...' at line 36

          Et bien sur, je constate par FTP qu'aucun fichier n'est installé.

          Merci de vos commentaires,

          Cordialement

          Philippe

          Commentaire


          • #6
            J'ai avancé un peu mais, sans obtenir pour autant satisfaction sous JOOMLA 4.1

            Mon composant ne s'installe toujours pas.

            Extrait du fichier INSTALL.MYSQL.SQL situé dans COMPOSANT/ADMIN/SQL :


            `ordering` int(11) NOT NULL DEFAULT '0',
            `created_by` int(10) unsigned NOT NULL DEFAULT '0',
            `created_by_alias` varchar(255) NOT NULL,
            `created` datetime NOT NULL,
            `publish_up` datetime,
            `publish_down` datetime,
            `modified` datetime NOT NULL,
            `modified_by` int(10) unsigned NOT NULL DEFAULT '0',
            `checked_out` int(10) unsigned NOT NULL DEFAULT '0',
            `checked_out_time` datetime,
            `state` tinyint(2) unsigned NOT NULL DEFAULT 0,
            PRIMARY KEY (`id`)
            ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
            Message d'erreur :
            JInstaller: :Install: erreur SQL Field 'created_time' doesn't have a default value

            Pourriez-vous m'indiquer le paramétrage qui convient ?

            Merci d'avance

            Cordialement

            Philippe DAGUZAN

            Commentaire


            • #7
              Je rappelle que checked_out ne doit pas être à 0 mais à null ou une valeur numérique, 0 étant une valeur numérique que Joomla! 4 interprète comme un verrouillage de l'élément.
              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

              Commentaire


              • #8
                J'ai avancé avec certains paramètres de DATETIME mais, il reste des éléments à updater :

                Il semblerait que les problèmes soient passés désormais de la ligne 36 à 42 (checked_out_time).

                J'obtiens le message suivant à la tentative d'installation du composant :
                . You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' `state` tinyint(2) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (`id`)...' at line 42

                Extrait du code

                `ordering` int(11) NOT NULL DEFAULT 0,
                `created_by` int(10) unsigned NOT NULL DEFAULT 0,
                `created_by_alias` varchar(255) NOT NULL DEFAULT '',
                `created` datetime NOT NULL,
                `publish_up` datetime,
                `publish_down` datetime,
                `modified` datetime NOT NULL,
                `modified_by` int(10) unsigned NOT NULL DEFAULT 0,
                `checked_out` int(10) unsigned NOT NULL DEFAULT 0,
                `checked_out_time` datetime NULL DEFAULT,
                `state` tinyint(2) unsigned NOT NULL DEFAULT 0,
                PRIMARY KEY (`id`)
                ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
                Question : quel est le paramétrage à mettre en place ?

                Cordialement

                Philippe

                Commentaire


                • #9
                  Hello.

                  A ce rythme tu n'es pas rendu...

                  Tu es sur que ton composant s'installait sous J3.x ??
                  Moi j'ai de sérieux doutes.

                  L'erreur est assez claire il me semble, mets donc une valeur après le DEFAULT de checked_out_time...

                  Inspire toi d'une table de joomla (#__content par exemple).
                  A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                  Rejoignez le Joomla Users Groupe Alsace...
                  roland_d_alsace va-t-il devenir roland_du_grand_est ?

                  Commentaire


                  • #10
                    Bonjour,

                    J'ai suivi ton conseil, savoir m'inspirer d'un autre composant qui tourne sous JOOMLA 4.1

                    Cela me marchait pas malgré la suppression de la table correspondant au composant de la BDD.

                    J'ai ensuite réinstallé le composant après avoir :
                    . Supprimé la table de la BDD
                    . Le composant dans la table EXTENSIONS de la BDD

                    Et là, le composant a été installé

                    Naturellement, pour qu'il soit parfaitement opérationnel, il faut régler les difficultés liées aux CLASSES devenues obsolètes avec JOOMLA 4 mais un grand pas a été franchi.

                    Merci à ceux qui m'ont aidé.

                    Très cordialement

                    Philippe

                    Commentaire

                    Annonce

                    Réduire
                    Aucune annonce pour le moment.

                    Partenaire de l'association

                    Réduire

                    Hébergeur Web PlanetHoster
                    Travaille ...
                    X