6
votes

Table SQL non créée lors du déploiement d'un fichier de guerre à Liferay

J'ai créé un portlet JSR-268 pour Liferay qui utilise des services pour interagir avec une base de données. Je peux déployer le portlet sans problèmes ni erreurs, mais la table définie par les services n'est pas créée!

Je n'obtiens pas d'erreur "Table non trouvée" lorsque je teste le portlet. Je n'obtiens pas du tout des erreurs! La table n'est tout simplement pas là dans la base de données. J'ai trouvé d'autres choses sur Internet disant que je devrais utiliser le fichier "Create.SQL" généré que le constructeur de services de perte de vie créé, mais je ne vois pas ce fichier n'importe où.

Quelqu'un peut-il m'aider?


0 commentaires

4 Réponses :


11
votes

Les tables n'ont-elles jamais été créées? J'ai eu un problème similaire quand j'ai supprimé les tables à la main. Je pensais qu'ils seraient créés à nouveau lors du déploiement du portlet, mais cela ne s'est pas produit.

Après avoir étudié le code source, j'ai découvert que Liferay stocke des informations sur les portlets de la table Servicecomonent et vérifie 2 choses avant qu'il n'exécute le (pseudo) SQL dans méta-inf / tables .SQL :

  1. the build.number dans service.properties doit être supérieur à celui-ci, stocké dans Servicecomonent ,
  2. the tables.sql doit être différent de celui stocké dans Servicecomonent .

    Seulement alors les tables .sql est exécutée.

    Un moyen facile d'atteindre cela, est de supprimer toutes les entrées dans Servicecomonent Adressant à votre portlet.


1 commentaires

Vous devez également la supprimer à partir de la liste de la table, puis le redéployer.



2
votes

Essayez en supprimant une entrée de la table ServiceComponent. Et redéployer votre portlet.

delete FROM servicecomponent where buildNamespace="<your table namespace>"


0 commentaires

0
votes

Si vous utilisez ServiceBuilder à Liferay 6.2 Lorsque vous définissez une nouvelle entité dans le schéma de perte de vie dans Service.xml, la première fois que tout portlet tente d'accéder à la table qu'elle sera créée s'il n'existe pas.

Il y a plusieurs problèmes lorsque vous utilisez un schéma différent, car parfois la vie ne crée pas de tables automatiquement. Ensuite, vous devez laurécher la phrase SQL Creation et la créer manuellement, puis l'accéder à LocalserviceUtil.


0 commentaires

1
votes

J'ai fait face au même problème et ci-dessous une solution donnée travaille pour moi.

étapes

  1. J'ai changé la build.number dans service.properties supérieur à celui stocké dans Servicecomonent.
  2. supprimé tous les fichiers XML du dossier META-INF .
  3. Supprimez tous les fichiers SQL de WebApp / Web-Inf / SQL Dossier.

    ALORS Build-Service et Déployer créera des tables personnalisées qui sont déformées dans Service.xml Fichier.


0 commentaires