IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Boot Java Discussion :

Génération automatique de tables dans la base de données postgressql


Sujet :

Spring Boot Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Génération automatique de tables dans la base de données postgressql
    Bonjour la communauté, besoin d'aide. J'ai crée mon projet spring boot. J'aimerai à partir de liquibase générer automatiquement les tables dans la base de données postgresql. Besoin d'aide please.
    Voici le contenu de mon fichier application.properties

    spring.application.name=gesco
    spring.url=jdbc:postgresql://localhost:5432/test
    spring.username=postgres
    spring.password=postgres

    spring.driver-class-name=org.postgresql.Driver
    spring.jpa.database=postgresql
    spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL10Dialect

    spring.initialization-mode=ALWAYS
    spring.schema=classpath*:database/initDB.sql
    #spring.datasource.data=classpath*:database/populateDB.sql
    jpa:
    hibernate:
    ddl-auto: none
    liquibase:
    change-log: classpath:/changelog/master.xml

    Contenu du fichier master.sql
    reate table ges_utilisateurs if not exists(
    id is not null primary key,
    user_nom varchar(100) not null,
    user_prenoms varchar(200) not null,
    user_username varchar(200) not null,
    user_password varchar(100) not null,
    user_description varchar(300) not null,
    user_telephone varchar(100) not null,
    user_adresse varchar(200) not null,
    user_signature varchar(200) not null,
    user_prenoms varchar(200) not null,
    ALTER TABLE ges_utilisateurs ADD CONSTRAINT
    fk_address_profils FOREIGN KEY (id_Profils)
    REFERENCES utilisateurs.profils (id) ON UPDATE RESTRICT
    ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED

    );

    create table ges_profils if not exists(
    id is not null primary key,
    libellé varchar(100) not null,
    description varchar(100) not null,
    ALTER TABLE ges_utilisateurs ADD CONSTRAINT
    fk_address_utilisateurs FOREIGN KEY (id_utilisateur)
    REFERENCES utilisateurs.profils (id) ON UPDATE RESTRICT
    ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED
    );

    Contenu de mon fichier maaster.xml
    <databaseChangeLog
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xmlnssi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
    xmlns:pro="http://www.liquibase.org/xml/ns/pro"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
    http://www.liquibase.org/xml/ns/dbch...log-latest.xsd
    http://www.liquibase.org/xml/ns/dbchangelog-ext
    http://www.liquibase.org/xml/ns/dbch...ngelog-ext.xsd
    http://www.liquibase.org/xml/ns/pro
    http://www.liquibase.org/xml/ns/pro/liquibase-pro-latest.xsd">

    <changeSet id="100000-1" author="@Esso">
    <createTable tableName="ges_utilisateurs">
    <column name="id" type="int" autoIncrement="true">
    <constraints primaryKey="true" nullable="false"/>
    </column>
    <column name="user_nom" type="VARCHAR(100 BYTE)"/>
    <column name="user_prenoms" type="VARCHAR(200 BYTE)"/>
    <column name="user_username" type="VARCHAR(100 BYTE)"/>
    <column name="user_password" type="VARCHAR(100 BYTE)"/>
    <column name="user_description" type="VARCHAR(300 BYTE)"/>
    <column name="user_telephone" type="VARCHAR(100 BYTE)"/>
    <column name="user_adresse" type="VARCHAR(200 BYTE)"/>
    <column name="user_signature" type="VARCHAR(200 BYTE)"/>
    <column name="id_Profils" type="String">
    <constraints nullable="false" foreignKeyName="fk_adresse_profils" references="id_profils"/>
    </column>

    </createTable>
    </changeSet>
    <changeSet id="100000-2" author="@Esso">
    <createTable tableName="ges_profils">
    <column name="id" type="int" autoIncrement="true">
    <constraints primaryKey="true" nullable="false"/>
    </column>
    <column name="libellé" type="VARCHAR(100 BYTE)"/>
    <column name="description" type="VARCHAR(300 BYTE)"/>
    <column name="id_utilisateur" type="String">
    <constraints nullable="false" foreignKeyName="fk_adresse_utilisateurs" references="id_utilisateur"/>
    </column>

    </createTable>
    </changeSet>
    <include file="changelog/schema.sql" relativeToChangelogFile="true"/>
    <include file="changelog/changelog_master.sql" relativeToChangelogFile="true"/>
    <include file="changelog/master.xml" relativeToChangelogFile="true"/>
    </databaseChangeLog>


    Contenu du 2è fichier .xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <databaseChangeLog
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xmlnssi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
    <include file="changelog/changelog_master.xml" />
    <include file="changelog/changelog_master.sql" />
    <include file="changelog/changelog_master.yml" />
    <include file="changelog/schema.sql" />
    </databaseChangeLog>

    Contenu du 2è fichier .Sql (schema.Sql)
    CREATE SCHEMA IF NOT EXISTS liquibase_demo;

    Contenu du fichier .yml
    ## YAML Template.
    ---
    spring:
    application:
    name: liquibase-service

    datasource:
    platform: postgres
    url: jdbc:postgresql://localhost:5432/poc_db?currentSchema=liquibase_demo
    username: postgres
    password: postgres
    driver-class-name: org.postgresql.Driver
    initialization-mode: always
    continue-on-error: false

    jpa:
    properties:
    hibernate:
    jdbc:
    lob:
    non_contextual_creation: true

    show-sql: true
    database: postgresql
    database-platform: org.hibernate.dialect.PostgreSQLDialect
    open-in-view: false
    generate-ddl: false

    liquibase:
    change-log: classpath:/changelog/changelog_master.xml
    default-schema: liquibase_demo
    version: 2
    updates:

    - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
    interval: "daily"

    - package-ecosystem: "maven"
    directory: "/"
    schedule:
    interval: "daily"


    databaseChangeLog:
    - include:
    file: changelog/db.changelog-yaml-changelog_master.yaml
    - include:
    file: changelog/db.changelog-sql-changelog_master.sql
    - include:
    file: changelog/db.changelog-json-changelog_master.json
    - include:
    file: changelog/db.changelog-xml-changelog_master.xml



    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 251
    Points : 404
    Points
    404
    Par défaut
    Il faut que la dépendance liquibase-core soit ajoutée dans le pom.xml et que le fichier de changelog soit dans le répertoire "src/main/resources/db/changelog".

    The Spring Boot Liquibase integration looks for a file named db.changelog-master.xml in the src/main/resources/db/changelog directory
    Source: https://contribute.liquibase.com/ext...cs/springboot/

    Au delà de ça, deux ou trois petites choses:

    <column name="libellé" type="VARCHAR(100 BYTE)"/>
    -> jamais d'accents dans les noms de colonnes
    <column name="id_Profils" type="String">
    -> attention à la casse, toujours en minuscules
    <column name="user_nom" type="VARCHAR(100 BYTE)"/>
    -> inutile de préfixer les noms des colonnes par "user_", on sait déjà que l'on est dans la table users (redondance d'infos)

Discussions similaires

  1. Suppression de tables dans une base de données Mysl
    Par Furius dans le forum Requêtes
    Réponses: 6
    Dernier message: 07/06/2013, 11h34
  2. [AIDEZ MOI SVP] enregistrer une table dans une base de donné
    Par progfann dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 06/06/2007, 10h18
  3. vérifier l'existance d'une table dans une base de donnée
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 31/10/2005, 12h39
  4. création d'une table dans une base de donnée accèss
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 25/10/2005, 11h54
  5. Taille de chaque table dans une base de donnée
    Par Florent PORRAS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/09/2005, 22h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo