0
votes

RelevéCallback; mauvaise grammaire SQL uniquement lorsqu'il est déployé sur Heroku

J'ai créé une application de démarrage à ressort qui utilise jdbctemplate, tout fonctionne bien sur Localhost, mais lorsque je déploie mon application à Heroku et visitez le point final, je reçois ces informations:

public Products getProductsList() {
    ArrayList<Product> productsList = new ArrayList<>();

    jdbcTemplate.query(
            "SELECT id, name, price, image, description FROM public.products;",
            (rs, rowNum) -> new Product(rs.getInt("id"), rs.getString("name"), rs.getFloat("price"), rs.getString("image"), rs.getString("description"))
    ).forEach(product -> productsList.add(product));

    return new Products(productsList);
}


2 commentaires

Soit: 1) Le tableau "Produits" n'existe pas dans l'environnement déployé, 2) Vous avez une faute de frappe dans le nom de la table (étui à chameaux, étui de serpent, minuscule, majuscule) ou si ceux-ci sont bons, alors ceci: Stackoverflow.com/questions/36753568/...


Comme je l'ai dit, ça marche sur la machine locale


3 Réponses :


0
votes

Je pense que vous devez mettre votre nom de schéma dans votre fichier application.properties comme: xxx

et écrivez votre requête comme: < Pré> xxx

Source: Cette réponse et Cette réponse


1 commentaires

Je n'utilise pas jpa / hibernate, juste jdbctemplate



0
votes

Vous devrez créer les tables à l'aide d'un cadre de migration comme décrit dans https://devcenter.heroku.com/articles/Running-Database-migrations-for-java-apps


0 commentaires

0
votes

D'accord, je l'ai réparé.

Heroku a ajouté sa propre configuration à mon projet pour une raison quelconque pour une raison quelconque (Addon avec PostgreSQL) et une base de données utilisée à partir de Paramètres-> Config Vars -> Database_url au lieu de la base de données de l'application.Properties.

J'ai utilisé la commande de cette réponse dans Heroku CLI pour supprimer la base de données Heroku de mon application.


0 commentaires