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

Firebird Discussion :

Débuter avec FireBird !


Sujet :

Firebird

  1. #1
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut Débuter avec FireBird !
    Bonjour à tous.

    Afin d'élargir ma connaissance des bases de données, j'ai installé FireBird version 2.5.4 sans trop de problème sous windows 10.
    J'ai fait le test de l'accessibilité à la base de données 'employee.fdb' et cela fonctionne parfaitement. Donc a priori, je pense que l'installation s'est bien passé.

    J'aimerai savoir comment travailler avec FireBird en ligne de commande ? Après quelques recherches sur le net, je pense qu'il faut utiliser 'isql'.
    Pour ce faire, j'ai créé un script batch windows comme ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off
     
    chcp 1252 > nul
     
    set PATH=.;F:\Wamp\bin\filebird\courant\bin\;%PATH%
     
    isql < test.sql
    @echo.
    pause
    exit
    Est-ce ainsi que l'on travaille en ligne de commande ? Y-a-t-il une autre façon de procéder ?
    J'ai fait aussi le test de l'accessibilité à la base 'employee.fdb' et cela fonctionne comme ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CONNECT "f:\Wamp\bin\firebird\courant\examples\empbuild\employee.fdb" user 'SYSDBA' password 'masterkey';
     
    select * from department;
     
    quit;
    Je sais que cet exemple est basique mais je n'ai pas trouvé beaucoup d'informations sur le net.
    Pouvez-vous me conseiller sur la bonne pratique de la ligne de commande avec FireBird ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    perso j'ai toujours trouvé contraignant d'utiliser les lignes de commande surtout s'il s'agit d'aborder un nouveau SGBD, je préfère nettement lui trouver un GUI (ça tombe bien il y en a , j'adore particulièrement Flamerobin, mais Database WorkBench Lite for Firebird ne suis pas loin derrière Outils-Firebird et il y en a d'autres ... )
    mais je n'ai pas trouvé beaucoup d'informations sur le net.
    Pouvez-vous me conseiller sur la bonne pratique de la ligne de commande avec FireBird ?
    Pour ce qui est de ISQL (OUI c'est ce qu'il faut utiliser en ligne de commande) , je suis sûr qu'il y a un manuel http://www.firebirdsql.org/pdfmanual/Firebird-isql.pdf moins sûr par contre de trouver un tutoriel (français de surcroît)

    après, pour ce qui est du SQL (DDL,PSQL) sensu stricto, celui de Firebird est pratiquement à la norme ANSI
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Bonjour,

    Effectivement ISQL pour les requêtes en ligne de commande ou interactives.
    Mais il y a bien mieux pour débuter comme le précise SergioMaster.

    Moi j'utilise IBExpert.
    Il existe une "personal edition" gratuite :
    http://www.ibexpert.net/ibe/index.ph...wnloadPersonal
    Qui comporte quelques limitations :
    http://www.ibexpert.net/ibe/index.ph...ersonalEdition
    Aucune de ces limitations n'empêche la création et l'utilisation d'une base de données.

    Par contre je vois que vous avez employee.fdb ? Où l'avez vous récupérée ? C'est bien une base Firebird et non une base Interbase ?

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut à tous.

    @ SergioMaster : Dois-je vous appeler maitre ?

    Citation Envoyé par SergioMaster
    j'ai toujours trouvé contraignant d'utiliser les lignes de commande surtout s'il s'agit d'aborder un nouveau SGBD
    Tout au contraire, tu gardes une trace des exercices que tu fais.

    Ce que j'appelle "en ligne de commande", ce n'est pas aller sous la console, mais de me créer un script que je conserve dans un répertoire.
    J'ai un script batch windows sui m permet d'invoquer ISQL, mais aussi le script sql contenant les lignes de commandes pour FireBird.

    Cela me permet de constituer une grosse bibliothèque où je mets tous les exercices et autres astuces que je trouve sur un SGBD.
    Ainsi j'ai à ma disposition le "comment-faire" et je n'ai plus besoin, par la suite, de me casser la tête pour retrouver sa faisabilité.

    Citation Envoyé par SergioMaster
    je préfère nettement lui trouver un GUI (ça tombe bien il y en a
    Je travaille beaucoup avec MySql et par conséquent j'utilise PhpMyAdmin.
    Mais à la longue, je n'y vais plus car j'ai une nette préférence pour la ligne de commande, enfin les scripts.
    Tout ce que l'on peut faire avec PhpMyAdmin, on peut le faire en ligne de commande. Il suffit juste de trouver les équivalents.

    Citation Envoyé par SergioMaster
    Pour ce qui est de ISQL (OUI c'est ce qu'il faut utiliser en ligne de commande)
    J'avais un doute, mais bon, si c'est l'utilitaire qui faut, cela me rassure.

    Citation Envoyé par SergioMaster
    Pour ce qui est de ISQL (OUI c'est ce qu'il faut utiliser en ligne de commande)
    Merci pour le lien vers le manuel de FireBird.

    Citation Envoyé par SergioMaster
    après, pour ce qui est du SQL (DDL,PSQL) sensu stricto, celui de Firebird est pratiquement à la norme ANSI
    D'accord mais quelle norme ? SQL92 ? SQL99 ?
    Faut-il préciser quelque chose et quoi, quelque part, afin d'être certain d'utiliser la bonne norme ?

    Quelques précisions au sujet du fonctionnement de ISQL et de FireBird.

    1) il faut toujours débuter ISQL soit par un "create database" ou un "connect" avec cet utilitaire. Est-ce bien cela ? Et aussi terminer par un "quit".

    2)J'ai découvert ce genre de ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql -user 'sysdba' -password 'masterkey' 'f:\Wamp\bin\firebird\courant\examples\empbuild\employee.fdb' < %FIC%
    Je trouve cela plus pratique que de mettre systématiquement le user, le password et la chemin vers la database.

    Au lieu de taper cela en ligne de commande, n'y a-t-il pas un fichier, genre 'My.ini' sous MySql, où tout le paramétrage serait présent ?

    3) la base de données que je crée, de nom "base.fdb", peut se mettre n'importe où.
    A l'inverse de MySql, elle est créé dans le répertoire "F:/wamp/bin/mysql/mysq5.7.8.RC/data".
    Je trouve que cela permet de mieux s'organiser, surtout en ce qui concerne les sauvegardes.

    4) y-a-t-il qu'un seul fichier "base.fdb" contenant toutes les tables ?
    Sous MySql, on peut créer séparément les tables.
    Est-il possible de créer des partitions comme sous MySql ? D'après ce que j'ai compris, je crois que non.

    5) peut-on travailler sur plusieurs bases de données à la fois, créé au préalable sous FireBird ?

    C'est tout pour l'instant.

    Citation Envoyé par Barbibulle
    Mais il y a bien mieux pour débuter comme le précise SergioMaster.
    Oui, vous avez tout à fait raison, mais pour l'instant, je préfère travailler en ligne de commande.
    Question d'habitude, je suppose.

    Citation Envoyé par Barbibulle
    Par contre je vois que vous avez employee.fdb ? Où l'avez vous récupérée ? C'est bien une base Firebird et non une base Interbase ?
    La base de données 'employee.fdb' est fournie avec l'installation de FireBird 2.5.4.
    Quand j'ai installé FireBird, j'ai précisé le chemin suivant : 'f:\Wamp\bin\firebird\'.
    J'ai renommé le sous répertoire 'firebird_2_5' en courant.
    Donc la base de données 'employee', se trouve chez moi sous : 'f:\Wamp\bin\firebird\courant\examples\empbuild\employee.fdb'.
    J'espère que cela vous aide à identifier où se trouve cette base de données.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut à tous.

    Tout au contraire, tu gardes une trace des exercices que tu fais.

    Ce que j'appelle "en ligne de commande", ce n'est pas aller sous la console, mais de me créer un script que je conserve dans un répertoire.
    @+
    Les outils graphiques comme Database Workbench te permettent aussi d'enregistrer une collection de scripts, d'organiser des notes, de faire des templates, d'avoir l'autocompletion, etc ...
    http://www.upscene.com/database_workbench/editions
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    @ SergioMaster : Dois-je vous appeler maitre ?
    Maître, non en fait c'est juste une affectation, lors de mon inscription au forum les Sergioxxxx étaient déjà pris et comme j'étais sur le poste 'maitre' du réseau
    Tout au contraire, tu gardes une trace des exercices que tu fais.
    Ce que j'appelle "en ligne de commande", ce n'est pas aller sous la console, mais de me créer un script que je conserve dans un répertoire.
    avec les GUI aussi (enfin avec ceux que j'ai cité je peux et je n'ai même pas parlé de Rapid SQL de Embarcadero que j'utilise aussi)
    D'accord mais quelle norme ? SQL92 ? SQL99 ?
    Faut-il préciser quelque chose et quoi, quelque part, afin d'être certain d'utiliser la bonne norme ?
    j'allais dire 98 mais du coup je doute, c'est certainement écrit quelque part dans la Doc (en fait c'est plutôt makowski le gourou Firebird et qui nous sors régulièrement un : "c'est dans la doc en indiquant presque la référence et la page )
    1) il faut toujours débuter ISQL soit par un "create database" ou un "connect" avec cet utilitaire. Est-ce bien cela ? Et aussi terminer par un "quit".
    Oui, il faut bien que ISQL sache sur quelle base travailler et tant qu'à faire il est bon de bien fermer les transactions
    2)J'ai découvert ce genre de ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql -user 'sysdba' -password 'masterkey' 'f:\Wamp\bin\firebird\courant\examples\empbuild\employee.fdb' < %FIC%
    Je trouve cela plus pratique que de mettre systématiquement le user, le password et la chemin vers la database.
    Oh il y a encore mieux en utilisant les alias (fichier aliases.conf) on évite d'avoir à indiquer le chemin et le nom de la base et ce réfère à cette dernière uniquement par le nom d'alias quand aux user et password , il est fortement recommandé de ne pas utiliser SYSDBA comme propriétaire d'une BDD et de changer le mot de passe, et je ne me souviens plus mais il y a moyen de cacher ça en plus (il y a un document à ce sujet, si je le retrouve ...)
    Au lieu de taper cela en ligne de commande, n'y a-t-il pas un fichier, genre 'My.ini' sous MySql, où tout le paramétrage serait présent ?
    donc oui, en grande partie (il faut juste retrouver la manip ma mémoire flanche)

    3) la base de données que je crée, de nom "base.fdb", peut se mettre n'importe où.
    Oui, toutefois sous windows je déconseillerais les répertoires systèmes << boutade
    4) y-a-t-il qu'un seul fichier "base.fdb" contenant toutes les tables ?
    Oui, les tables qui appartiennent à la base de données
    Sous MySql, on peut créer séparément les tables.
    Est-il possible de créer des partitions comme sous MySql ? D'après ce que j'ai compris, je crois que non.
    euh, joker, c'est quoi une partition en MySQL ? s'il s'agit de diviser la SGBD en plusieurs fichiers alors si c'est possible (je dirais le nom exact après mon traitement alzheimer )
    5) peut-on travailler sur plusieurs bases de données à la fois, créé au préalable sous FireBird ?
    OUI, bien que généralement une seule base bien faite vaut mieux que deux mal goupillées
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    j'allais dire 98 mais du coup je doute, c'est certainement écrit quelque part dans la Doc (en fait c'est plutôt makowski le gourou Firebird et qui nous sors régulièrement un : "c'est dans la doc en indiquant presque la référence et la page )
    déjà en 2003 on disait à propos de Firebird 1.5:
    Firebird has full SQL 92 Entry Level 1 Support and implements most of the SQL-99 standard, plus some very useful additions
    mais depuis la version 2.0 c'est de plus en plus SQL2003

    là c'est un doc de 2006 :
    http://www.firebirdsql.org/en/sql-conformance/
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Là , qu'est-ce que je disais , merci Philippe

    NB. je me suis permis de légèrement corrigé la citation
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut à tous.

    Et bien, merci pour vos confirmations.
    Je découvre que FireBird respecte mieux la norme que MySql. A moins de me tromper, je crois que MySql est encore dans la norme sql92.

    Citation Envoyé par SergioMaster
    Oh il y a encore mieux en utilisant les alias (fichier aliases.conf) on évite d'avoir à indiquer le chemin et le nom de la base et ce réfère à cette dernière uniquement par le nom d'alias
    En lisant la doc, j'ai vu cela. J'ai fait un essai et cela a bien fonctionner.

    Citation Envoyé par SergioMaster
    quand aux user et password , il est fortement recommandé de ne pas utiliser SYSDBA comme propriétaire d'une BDD et de changer le mot de passe
    J'ai ajouté un nouvel utilisateur 'supervisor' pour faire le test. Voici les étapes :

    1) création de l'utilisateur 'supervisor'.
    Pour ce faire, j'ai utilisé la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gsec  -password masterkey  -user sysdba  -z  < %FIC%
    Et j'ai tapé la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    add supervisor -pw admin -fname Supervisor -lname Administrator
    A priori, je pense que l'utilisateur a été créé.

    2) je donne des droits à cet utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    show grant;
     
    drop   role dbadmin;
    create role dbadmin;
     
    grant all on test to role dbadmin WITH GRANT OPTION;
     
    grant dbadmin to supevisor;
     
    show grant;
     
    quit;
    Voici le résultat que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    show grant;
    There is no privilege granted in this database
     
    drop   role dbadmin;
    Statement failed, SQLSTATE = 42000
    unsuccessful metadata update
    -Role DBADMIN not found
    After line 1 in file 2.Granted.sql
    create role dbadmin;
     
    grant all on test to role dbadmin WITH GRANT OPTION;
     
    grant dbadmin to supevisor;
     
    show grant;
     
    /* Grant permissions for this database */
    GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON TEST TO ROLE DBADMIN WITH GRANT OPTION GRANTED BY SYSDBA
    GRANT DBADMIN TO SUPEVISOR GRANTED BY SYSDBA
     
    quit;
     
    Appuyez sur une touche pour continuer...
    Question : ces droits (granted) sont-ils associés à la base de données ? Ou bien sont-elles dans le noyau de FireBird ?
    J'ai remarqué qu'à chaque fois que je détruis la base de données, je perds les droits.

    3) J'ai créé une base de données et une table et j'ai mis trois lignes dedans.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE DATABASE '../data/base.fdb' page_size 4096;
     
    create table test (
    id  int      not null primary key,
    lib char(20) not null);
     
    insert into test (id,lib) values (1, 'un');
    insert into test (id,lib) values (2, 'deux');
    insert into test (id,lib) values (3, 'trois');
     
    select * from test;
     
    quit;
    Pour créer cette base de données, j'ai utilisé la ligne de commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql  -echo  -input %FIC%  -quiet  -password 'admin'  -user 'supervisor'
    J'ai introduit le nouvel utilisateur avec son mot de passe.

    Et voici le résultat que j'obtiens à l'exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    CREATE DATABASE '../data/base.fdb' page_size 4096;
     
    create table test (
    id  int      not null primary key,
    lib char(20) not null);
     
    insert into test (id,lib) values (1, 'un');
    insert into test (id,lib) values (2, 'deux');
    insert into test (id,lib) values (3, 'trois');
     
    select * from test;
     
              ID LIB
    ============ ====================
               1 un
               2 deux
               3 trois
     
     
    commit;
     
    show database;
    Database: ../data/base.fdb
            Owner: SUPERVISOR
    PAGE_SIZE 4096
    Number of DB pages allocated = 196
    Sweep interval = 20000
    Forced Writes are ON
    Transaction - oldest = 4
    Transaction - oldest active = 5
    Transaction - oldest snapshot = 5
    Transaction - Next = 7
    ODS = 11.2
    Default Character set: NONE
     
    quit;
     
    Appuyez sur une touche pour continuer...
    On remarque que le propriétaire est 'supervisor'. C'est ce que je voulais.

    4) j'ai créé un autre script afin de tester les droits. Voici la ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql  -echo  -input %FIC%  -quiet  -password 'admin'  -role 'dbuser'  -user 'supervisor'  'base'
    J'ai ajouté le 'role' et la base de données sous son nom d'alias. D'après ma dernière exécution, j'ai trois lignes dans ma table.
    Or je n'ai pas retrouvé ces trois dernières lignes en exécutant l'autre scirpt.
    Tout ce passe comme s'il n'y avait pas eu de 'commit' à la fin de mon premier script.
    Est-ce que je dois préciser systématiquement le 'commit' en fin de script ? N'y-a-t-il pas un moyen de le rendre automatiquement ?

    J'ai mis un 'commit' à la fin de mon premier script et j'ai bien retrouvé mes trois lignes manquantes.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  10. #10
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut à tous.

    Citation Envoyé par Sergiomaster
    Citation Envoyé par Artemus24
    Est-il possible de créer des partitions comme sous MySql ? D'après ce que j'ai compris, je crois que non.
    euh, joker, c'est quoi une partition en MySQL ? s'il s'agit de diviser la SGBD en plusieurs fichiers alors si c'est possible (je dirais le nom exact après mon traitement alzheimer )
    Une partition, c'est décomposer une table qui à l'origine est contenu dans un seul fichier, en plusieurs fichiers.
    Je ne rentre pas dans le détail. Voici un lien : http://krierjon.developpez.com/mysql/partitionnement/

    Citation Envoyé par Sergiomaster
    Citation Envoyé par Artemus24
    5) peut-on travailler sur plusieurs bases de données à la fois, créé au préalable sous FireBird ?
    OUI, bien que généralement une seule base bien faite vaut mieux que deux mal goupillées
    Désolé, je me suis mal exprimé.
    Quand j'utilise la ligne de commande 'isql', je déclare une seule base de données. Y-a-t-il moyen d'en créer deux, trois ...
    Admettons que je veuille remplir une table, nouvellement créé, à partir d'une autre table, mais d'une autre base de données.
    Dois-je obligatoirement passer par un fichier séquentiel ? En disant cela, je pense au 'load data file' (voir ici, le détail sous mysql).
    Ou bien, peut-on faire un lien entre ces deux bases de données ?

    6) pour quel usage utilise-t-on une base de données FireBird ?
    Comparativement FireBird, question performance, volumétrie ou possibilité, se situe où par rapport à MySql ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Il y a beaucoup à lire et j'ai peu de temps (alors pour ne pas dire de bêtises je resterai assez concis)

    - je crois que ISQL est transactionnel donc oui il ne faut pas oublier les commit (s) après modification de données
    - les utilisateurs c'est "interne" à Firebird (security2.fdb si mes souvenirs sont corrects) les Droits (GRANT) à la base de données
    - il doit y avoir une petite coquille dans tes scripts , supervisor perd son r du centre à un moment

    - le partitionnement non il n'existe pas par table (mais il faut aussi comprendre que toutes les tables sont dans la base) mais par base donc là MySQL fait mieux ?

    pour le point 6 je serais partial, le gros moins de Firebird est le peu d'hébergement proposé à contrario de mySQL coté performance par contre AMHA y a pas photo
    et si tu veux un avis sur MySQL pose la question à Frederic Brouard aka SQLPro il a quelque fois de ces à faire pâlir
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut Sergiomaster.

    Il n'y a pas d'urgence dans mes questions, tu peux prendre tout le temps que tu veux pour y répondre, mais j'attends une réponse.
    C'est juste des questions pour savoir démarrer sans avoir trop de problèmes, ni trop de lectures à faire.
    Dans ce sujet, ce qui m'intéresse le plus, c'est le paramétrage (enfin la configuration) de FireBird.
    Passez ce cap difficile, le reste ne sera qu'un jeu d'enfants. Je dis cela, car je connais assez bien les SGBD (DB2 sous gros système et MySql sous micro Windows).

    Citation Envoyé par SergioMaster
    je crois que ISQL est transactionnel donc oui il ne faut pas oublier les commit (s) après modification de données
    Sous MySql, le commit est automatique, enfin je devrais dire qu'il est paramétrable et que par défaut, il est automatique.
    Cela me surprend que sous FireBird cela ne soit pas le cas. Y-a-t-il un paramétrage à faire pour rendre ce 'commit' automatique ?

    Citation Envoyé par SergioMaster
    il doit y avoir une petite coquille dans tes scripts , supervisor perd son r du centre à un moment
    Bien vu ! Je viens de corriger cela mais cela n'a pas changé grand chose au niveau des droits.

    Citation Envoyé par SergioMaster
    pour le point 6 je serais partial, le gros moins de Firebird est le peu d'hébergement proposé à contrario de mySQL coté performance par contre AMHA y a pas photo
    Je ne sais pas grand chose de FireBird, sinon qu'il existe un lien avec Mozilla : https://fr.wikipedia.org/wiki/Firebi..._donn%C3%A9es)
    Si la performance est un atout vis-à-vis de MySql alors oui, cela m'intéresse énormement.
    Peut-on comparer FireBird au moteur 'MyIsam' de MySql ? C'est-à-dire très performant sur les lectures, et moins performant s'il y a des mises à jour ?

    Citation Envoyé par SergioMaster
    et si tu veux un avis sur MySQL pose la question à Frederic Brouard aka SQLPro il a quelque fois de ces à faire pâlir
    Je voie que tu connais le personnage et sa réputation n'est plus à faire ! Je croyais être le seul à avoir eu des problèmes avec lui.
    Non merci pour ta recommandation mais je n'ai pas besoin de ses conseils. Je sais me débrouiller tout seul en MySql.

    Ce que j'ai déjà fait avant de créer ce sujet c'est :
    a) installation de FireBird version 2.5.4.
    b) lecture de la documentation afin de comprendre le paramétrage basique pour accéder à la base de données 'employee'.
    c) création d'un script php pour accéder à quelques tables de 'employee'.
    d) activation du driver 'php_pdo_firebird' sous wampserver.
    e) configuration de l'accès et de l'ouverture en php à la base de données 'employee'.
    f) tentative de création d'un script en ligne de commande à partir de 'isql'.

    Il me reste surtout à comprendre comment configurer FireBird et à faire quelques tests de performances.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  13. #13
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Bonjour,

    Dans le CREATE DATABASE il serait judicieux de préciser le jeux de caractère par défaut de la base.

    Pour votre table vous avez utilisé char(20) je ne sais pas si c'est voulu mais en règle générale on utilise plutot varchar(20).

    le char(20) va toujours prendre 20 caractères (la zone est donc si besoin complétée par des espaces à droite)
    Le varchar va enregistrer et restituer les caractères qu'on lui a demandé. Si on a mis des blancs en fin ils sont conservés.

    Nb : Pour concaténer des chaines c'est : ||

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into test (id,lib) values (4, 'Quatre  '); -- j'ai mis deux espaces après le Quatre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select id, '<'||lib ||'>' from test;
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     1 <Un                  >
     2 <Deux                >
     3 <Trois               >
     4 <Quatre              >
    Alors que si lib était déclaré en varchar(20)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     1 <Un>
     2 <Deux>
     3 <Trois>
     4 <Quatre  > <- on retrouve bien les deux espaces qui étaient au niveau de l'insert

  14. #14
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut Barbibulle.

    Merci pour votre conseil , mais c'est juste un test de fonctionnement que je fais et non une base de données normalisée.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Alors en vrac :

    revenons sur le partitionnement, serait-ce cela http://www.firebirdsql.org/file/comm...3windowing.pdf si oui il faut passer à FB3, mais je ne crois pas qu'il s'agisse de la même chose que MySQL où semblerait-il il y a partition physique ?

    le lien sur toutes les docs au cas où http://www.firebirdsql.org/en/reference-manuals/

    Citation Envoyé par Sergiomaster
    je crois que ISQL est transactionnel donc oui il ne faut pas oublier les commit (s) après modification de données
    je crois plus, j'en suis sur
    Citation Envoyé par isql-set.html
    There is a default transaction started for you when you use isql. When you commit or rollback in isql, the default transaction ends, and a new default transaction begins.
    Citation Envoyé par Artemus24
    Sous MySql, le commit est automatique, enfin je devrais dire qu'il est paramétrable et que par défaut, il est automatique.
    Cela me surprend que sous FireBird cela ne soit pas le cas. Y-a-t-il un paramétrage à faire pour rendre ce 'commit' automatique ?
    ne pas confondre Firebird et ISQL, Firebird est un SGBDR par définition transactionnel, ISQL un outil pour interroger un base de données Firebird et cet outil ... voir plus haut et cet outil peut avoir certains paramétrages SET mais pas de AUTOCOMMIT je le crains (enfin pas vraiment, je ne voudrais pas d'un autocommit)

    Dans ce sujet, ce qui m'intéresse le plus, c'est le paramétrage (enfin la configuration) de FireBird.
    celui de firebird (donc manipulation de firebird.conf) ou de ISQL ? c'est pas clair (et pas du tout la même chose)

    pour revenir sur la connexion à la base avec ISQL je savais bien qu'il y avais moyen de ne pas saisir les identifiants
    vraiables d'environnement ISQL
    mais il me semble me souvenir qu'il y a mieux mais peut être n'est-ce que pour GBAK
    gbak:general options are:
    -FE(TCH_PASSWORD) fetch password from file
    Code Barbibulle : Sélectionner tout - Visualiser dans une fenêtre à part
    Dans le CREATE DATABASE il serait judicieux de préciser le jeux de caractère par défaut de la base.
    c'est plus que judicieux, je m'en mords encore les doigts lors de ma création de ma toute première base (encore en production ) qui est en NONE mais pire Dialog 1 (à ma décharge cette dernière à été crée avec Interbase 4 je crois) . D'ailleurs, a propos, Firebird est une fourche d'Interbase (lorsque cette dernière est passée, un temps restreint, en Open Source) toute (ou presque) la vieille documentation d'Interbase est encore applicable de nos jours (j'ai encore ça dans ma bibliothèque papier et y jette un coup d’œil de temps en temps pour pallier aux trous de mémoire)

    Si la performance est un atout vis-à-vis de MySql alors oui, cela m'intéresse énormement.
    je ne crois pas qu'il y ait de benchmark MySQL vs Firebird (il y en a peu avec Firebird de manière générale) enfin par benchmark je ne parle pas de celui de popularité (là MySQL est largement gagnant)
    à noter que si Firebird est un Vrai OpenSource ce n'est pas le cas de MySQL contrairement à la croyance populaire
    Egalite ?
    enfin en voici un datant un peu, sur les performances
    qui en plus oriente vers les choix Client Serveur ou Super Serveur à l'installation

    un autre comparatif instructif et assez récent

    ce sera tout je pense pour aujourd'hui
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  16. #16
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut SergioMaster.

    Merci Sergio pour tes explications. Cela me permet de mieux comprendre comment fonctionne FireBird.

    Pour le partitionnement, j'ai jeté un coup d'oeil sur ton premier lien, mais je n'ai pas retrouvé le découpage d'une table (physique) en plusieurs partitions (des sous-tables physiques) comme sous MySql.
    C'était juste une question sans grande importance pour l'instant. Je reviendrais dessus quand le problème se posera.

    Pour le 'commit', normalement, il n'est pas nécessaire de le préciser quand tu fais un insert. Il va de soi que si tu fais un insert, c'est pour conserver dans la table tes données.

    Citation Envoyé par SergioMaster
    ne pas confondre Firebird et ISQL, Firebird est un SGBDR par définition transactionnel, ISQL un outil pour interroger un base de données Firebird
    Je ne comprends pas bien pourquoi tu fais la distinction entre le SGBD et l'outil ?
    Quand je parle du paramétrage, il s'agit bien du SGBD. L'exemple du 'autocommit' soit se paramétrer dans le SGBD, non ?

    D'après ce que j'ai compris, quand tu parles du paramétrage de ISQL, ce sont les 'set', que l'on nomme des commandes.
    J'ai jeté un coup d'oeil sur tous ces set, et c'est bien moins riche que sous MySql. Oui, en effet, le 'autocommit' n'existe pas en tant que commande ('set') sous 'ISQL'.

    Et je suppose que quand tu parles du paramétrage de FireBird, il s'agit que du fichier 'firebird.conf'. Est-ce bien cela ?
    C'est bien de ce fichier (enfin je crois) lorsque je parle du paramétrage de FireBird.

    Citation Envoyé par SergioMaster
    pas de AUTOCOMMIT je le crains (enfin pas vraiment, je ne voudrais pas d'un autocommit)
    Autre SGBD, autre façon de faire. Il faut juste savoir que je dois systématiquement valider ('commit') ou rejeter ('rollback') selon mon traitement.
    Maintenant que je le sais, je le mettrais systématiquement dans mes scripts.

    Citation Envoyé par SergioMaster
    pour revenir sur la connexion à la base avec ISQL je savais bien qu'il y avais moyen de ne pas saisir les identifiants : variables d'environnement ISQL
    Intéressant ! Mais cela suppose qu'un utilisater FireBird est identifié d'une manière unique, soit en tant qu'utilisateur lambda, soit en tant d'administrateur.
    Pour l'instant, je ne fais que des tests et j'essaye tant bien que mal de me créer un environnement de travail.
    Je n'ai aucun problème de confidentialité pour l'instant car je suis seul à travailler dans l'environnement FireBird.
    J'ai mis le nom d'utilisateur et le mot de passe dans le script batch (l'invite de commande windows).
    Par la suite, je procéderais autrement pour des raisons de sécurités.

    J'aimerai revenir sur l'outil 'GSEC'. Il sert juste à créer un compte utilisateur mais il ne met aucun droit au départ sur ce compte, c'est bien cela ?
    J'ai créé deux comptes, l'un de nom 'supervisor' et l'autre de nom 'artemus'. Le premier sera un compte administrateur et l'autre un compte utilisateur.
    Avec l'outil 'ISQL' et sous le compte 'sysdba', je n'ai mis aucun droit (pas de grant) sur le compte 'supervisor' et un grant select sur le compte 'artemus'.

    J'ai pourtant créé une base de données et une table avec le compte 'supervisor' et tout s'est bien passé --> base + table ont été créées.
    Quand je consulte la base de données avec 'show database', le propriétaire est bien 'supervisor'.
    Comment se fait-il que j'ai pu créer la base de données et la table avec le compte 'supervisor' alors qu'il n'a aucun droits.

    Inversement, j'ai fait un accès à cette même table avec le compte 'artemus' et j'ai bien eu ce que je voulais.
    Pas de select dans le grant, pas d'accès à la table. Un select dans le grant, un accès à la table. Idem avec le insert.
    J'ai pas bien compris la différence de comportement entre ces deux comptes.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  17. #17
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut SergioMaster.

    Je poursuis mes investigations dans Firebird !

    En ce qui concerne le charset, j'ai un doute sur le bon choix à mettre.
    J'utilise que le français ou l'anglais.
    La norme est bien le 'latin1' ou encore 'windows-1252' ou encore 'ISO8859-1'.
    Que dois-je mettre sous FireBird ? 'iso8859_1' ou bien 'win1252' ?

    http://www.destructor.de/firebird/charsets.htm

    En regardant les options de l'outil 'ISQL', j'ai remarqué cette option : '-charset'.
    J'ai mis 'win1252' et à ma grande surprise, j'ai eu ce message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -CHARACTER SET 'win1252' is not defined
    Pourquoi ne reconnait-il pas ce jeu de caractères ?

    Idem aussi pour 'iso8859_1' !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -CHARACTER SET 'iso8859_1' is not defined
    Quand je consulte la base de données 'employee', voici ce que j'ai comme jeu de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Default Character set: NONE
    Je comprends que les américains utilisent le code 'ASCII'.
    Que fait-il mettre si on n'utilise aucun accents, aucune particularité comme chez les américains ?
    Ne serait-il pas plus judicieux de mettre 'ASCII' ?

    Si tu te trompes, n'as-tu pas la possibilité de changer ce charset ?
    Je ne parle pas de mettre un autre charset dans la base ou dans la table.
    Mais bien de faire la conversion de toutes les chaines de caractères.

    Par contre, je n'ai pas eu de problème pour la base de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE DATABASE '../data/base.fdb' page_size 4096 DEFAULT CHARACTER SET ISO8859_1;
    ni pour la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create table test (
    id  int      not null primary key,
    lib char(20) not null collate fr_fr
    );
    Sous MySql, je jeu de caractères 'ISO8859-1' n'existe pas et a été remplacé par 'latin1'. Pourquoi ????? Pas bien compris ce choix sous MySql.
    De même pour la France, la collation 'fr_fr' n'existe pas. Je suis obligé de mettre 'latin1_general_ci'. Oui, c'est assez pauvre sous MySql.

    Quand j'étais sous DB2, on n'avait pas ce genre de problème car on travaillait sous 'EBCDIC' et il n'y avait rien d'autre.

    En ce qui concerne les SGBDR, je considère que le meilleur est bien celui d'IBM sur gros système : 'DB2 for z/OS'.
    A ne pas confondre avec 'IBM DB2' sous des plates-formes comme Windows.
    Je ne suis peut-être pas très objectif car j'ai été administrateur 'DB2 for z/OS' !
    C'est la deuxième base de données où je me suis énormément investit, après 'IDS II' sous BULL, toujours gros système.
    Et je ne connais pas que ces bases de données. J'ai connu aussi Socrate, DL1, IMS, IDMS, Natual/Adabas et FOCUS ...

    Inversement, sur des plates-formes comme Windows ou Linux, j'ignore quel est le meilleur SGBD.
    Selon certain (mais sont-ils impartiaux), ce serait 'Microsoft Sql Server'.
    Pourquoi j'aime bien MySql ? Parce que je n'ai eu aucune difficulté pour passer de DB2 à MySql. Et ce SGBD s'adapte bien à l'usage que j'en fait.
    Par contre ma connaissance des SGBD sous windows et linux est assez réduite. Je ne connais pour l'instant que MySql. Et un peu FireBird.

    C'est le hasard qui m'a orienté vers FireBird. Pour l'instant, je vais apprendre surtout à le configurer et à faire quelques tests.
    Ce que je cherche, c'est surtout un SGBD performant en terme de vitesse d'exécution.

    Citation Envoyé par SergioMaster
    ce sera tout je pense pour aujourd'hui
    Tu as raison ! Passe un bon weekend et à la semaine prochaine.
    Encore merci de ton aide.

    Comme tu as dû le remarqué j'ai mis que des '+1'.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  18. #18
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Pour le 'commit', normalement, il n'est pas nécessaire de le préciser quand tu fais un insert. Il va de soi que si tu fais un insert, c'est pour conserver dans la table tes données.
    Dans bien des cas mais parfois non....

    Par exemple je veux débiter un compte pour créditer un autre.

    Je fais un insert pour le débit et un second insert pour le crédit puis un commit.
    S'il y avait un commit après chaque insert je pourrais très bien me retrouver avec que le débit qui passe et pas de crédit (plantage de l'appli, du réseau, du serveur, du PC etc...)

    Effectivement quand on à pris la mauvaise habitude de n'utiliser que des auto-commit on ne sait plus gérer correctement les transactions.

    Alors je ne dis pas qu'il ne faut jamais d'auto commit, mais plutôt pouvoir l'utiliser que quand c'est utile. En ne faisant que de l'auto-commit on se prive de l’intérêt et la puissance des transactions.

    Et comme le dit SergioMaster il faut distinguer le SGBD des outils. Il y a des outils comme par exemple les drivers ODBC pour firebird qui sont paramétrés en auto-commit.
    Citation Envoyé par Artemus24 Voir le message
    Je ne comprends pas bien pourquoi tu fais la distinction entre le SGBD et l'outil ?
    Quand je parle du paramétrage, il s'agit bien du SGBD. L'exemple du 'autocommit' soit se paramétrer dans le SGBD, non ?
    Non cf plus haut

    Citation Envoyé par Artemus24 Voir le message
    Et je suppose que quand tu parles du paramétrage de FireBird, il s'agit que du fichier 'firebird.conf'. Est-ce bien cela ?
    C'est bien de ce fichier (enfin je crois) lorsque je parle du paramétrage de FireBird.
    Quand on débute il est généralement inutile d'aller triturer ce fichier. Le lire peut apprendre des choses.

    Citation Envoyé par Artemus24 Voir le message
    J'aimerai revenir sur l'outil 'GSEC'. Il sert juste à créer un compte utilisateur mais il ne met aucun droit au départ sur ce compte, c'est bien cela ?
    oui, on crée des comptes juste.

    Citation Envoyé par Artemus24 Voir le message
    J'ai créé deux comptes, l'un de nom 'supervisor' et l'autre de nom 'artemus'. Le premier sera un compte administrateur et l'autre un compte utilisateur.
    Avec l'outil 'ISQL' et sous le compte 'sysdba', je n'ai mis aucun droit (pas de grant) sur le compte 'supervisor' et un grant select sur le compte 'artemus'.

    J'ai pourtant créé une base de données et une table avec le compte 'supervisor' et tout s'est bien passé --> base + table ont été créées.
    Quand je consulte la base de données avec 'show database', le propriétaire est bien 'supervisor'.
    Comment se fait-il que j'ai pu créer la base de données et la table avec le compte 'supervisor' alors qu'il n'a aucun droits.
    supervisor étant le créateur de la base il est le OWNER de ce fait il a tous les droits sur cette base.
    SYSDBA a tous les droits sur toutes les bases.

    Tout autre compte que le OWNER ou SYSDBA doit avoir des grants adéquat pour travailler avec la base en question.

  19. #19
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut SergioMaster.
    Désolé ce n'est pas SergioMaster mais je répond quand même

    Citation Envoyé par Artemus24 Voir le message
    En ce qui concerne le charset, j'ai un doute sur le bon choix à mettre.
    J'utilise que le français ou l'anglais.
    La norme est bien le 'latin1' ou encore 'windows-1252' ou encore 'ISO8859-1'.
    Que dois-je mettre sous FireBird ? 'iso8859_1' ou bien 'win1252' ?
    Difficile de répondre, s'il n'y a que des clients windows win1252 sinon plutôt Iso8859_1 qui a des collations plus intéressantes.

    Ou encore UTF8 qui est certainement le plus utilisé pour les applications internationale ou sur le web...

    Citation Envoyé par Artemus24 Voir le message

    En regardant les options de l'outil 'ISQL', j'ai remarqué cette option : '-charset'.
    J'ai mis 'win1252' et à ma grande surprise, j'ai eu ce message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -CHARACTER SET 'win1252' is not defined
    Pourquoi ne reconnait-il pas ce jeu de caractères ?

    Idem aussi pour 'iso8859_1' !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -CHARACTER SET 'iso8859_1' is not defined
    Attention, le CHARACTER est utilisé à plusieurs endroit...

    Il y a le CHARACTER que l'on a indiqué lors de la création de la base. C'est le CHARACTER par défaut (donc quand on crée une colonne de type char/Varchar ou blob text et qu'on n' a pas précisé un autre CHARACTER c'est le defaultCHARACTER qui est utlisé).

    Il y a le CHARACTER qu'on a pu mettre au niveau des colonnes (pour ne pas utiliser celui par défaut de la base).

    Il y a le CHARACTER de connection à la base de données (celui dans ISQL)

    Citation Envoyé par Artemus24 Voir le message
    Si tu te trompes, n'as-tu pas la possibilité de changer ce charset ?
    Je ne parle pas de mettre un autre charset dans la base ou dans la table.
    Mais bien de faire la conversion de toutes les chaines de caractères.
    Oui c'est compliqué, voir très compliqué, il n'y a rien d'automatique (le plus simple est parfois de recréer une base avec le bon CHARACTER et de basculer tout de l'une à l'autre) alors qu'on peut éviter le bazars en choisissant le bon CHARACTER dès le début.

    Citation Envoyé par Artemus24 Voir le message
    Sous MySql, je jeu de caractères 'ISO8859-1' n'existe pas et a été remplacé par 'latin1'. Pourquoi ????? Pas bien compris ce choix sous MySql.
    De même pour la France, la collation 'fr_fr' n'existe pas. Je suis obligé de mettre 'latin1_general_ci'. Oui, c'est assez pauvre sous MySql.

    Quand j'étais sous DB2, on n'avait pas ce genre de problème car on travaillait sous 'EBCDIC' et il n'y avait rien d'autre.
    J'ai connu ça aussi, maintenant je crois qu'IBM propose UTF16, mais EBCDIC doit être encore bien présent

    Citation Envoyé par Artemus24 Voir le message
    En ce qui concerne les SGBDR, je considère que le meilleur est bien celui d'IBM sur gros système : 'DB2 for z/OS'.
    A ne pas confondre avec 'IBM DB2' sous des plates-formes comme Windows.
    Je ne suis peut-être pas très objectif car j'ai été administrateur 'DB2 for z/OS' !
    C'est la deuxième base de données où je me suis énormément investit, après 'IDS II' sous BULL, toujours gros système.
    Et je ne connais pas que ces bases de données. J'ai connu aussi Socrate, DL1, IMS, IDMS, Natual/Adabas et FOCUS ...
    Je comprend mieux l'approche.

  20. #20
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par Barbibulle Voir le message
    Oui c'est compliqué, voir très compliqué, il n'y a rien d'automatique (le plus simple est parfois de recréer une base avec le bon CHARACTER et de basculer tout de l'une à l'autre) alors qu'on peut éviter le bazars en choisissant le bon CHARACTER dès le début.
    ça , c'est le moins que l'on puisse dire
    pour en revenir à ma fameuse base en none dialog 1 FB2.1 par exemple, la restaurer sur un autre pc en FB 2.5 "m'oblige" à passer par la ligne de commande de GBAK en utilisant l'option -fix_fss_metadata win1252

    l'opération de création d'une base avec le bon charset et faire du datapump n'est pas non plus de tout repos (pour peu qu'il y ait des colonnes calculées c'est la Bérézina avec les outils dispo et bien sur il faut que tous les index/contraintes/triggers soit désactivés)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Agrandir un champ avec Firebird.
    Par fplanglois dans le forum Débuter
    Réponses: 3
    Dernier message: 19/04/2005, 15h25
  2. Installation et perte d'icône avec Firebird
    Par SebCBien dans le forum Applications et environnements graphiques
    Réponses: 22
    Dernier message: 31/10/2004, 16h46
  3. SUM avec firebird / interbase
    Par Jeankiki dans le forum InterBase
    Réponses: 5
    Dernier message: 28/10/2004, 23h13
  4. Display avec firebird
    Par santo dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 22/10/2004, 14h02
  5. Débuter avec Java
    Par reptils dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 11/07/2004, 21h26

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