Partage
  • Partager sur Facebook
  • Partager sur Twitter

Symfony3 - SQLITE Could not create database

Sujet résolu
    14 octobre 2018 à 12:29:23

    Hello,

    Je ne dois pas avoir les yeux en face des trous ce matin, je ne trouve pas mon erreur.

    $ php bin/console doctrine:database:create --env=test
    Created database /home/xxxx/newproject/var/data/db.test.sqlite for connection named test

    Par contre en prod c'est KO :

    $ php bin/console doctrine:database:create --env=prod
    Could not create database sqlite:////home/xxx/newproject/var/data/db.sqlite for connection named default
    An exception occured in driver: SQLSTATE[HY000] [14] unable to open database file
    

    :euh:o_O

    J'ai essayé de copier la base de test  pour l'utiliser comme prod (cp db.test.sql db.sql)  mais pas moyen je me prends toujours la même erreur "unable to open database file":colere:

    Voici ce que j'ai fait pour en arriver là.

    j'ai créé une nouvelle app Symfony3.4, et j'ai passé un composer require ext-pdo_sqlite. Mon composer.json définit ses dépendances ainsi :

    "require": {
    "php": ">=5.5.9",
    "ext-pdo_sqlite": "^7.2",
    "doctrine/doctrine-bundle": "^1.6",
    "doctrine/orm": "^2.5",
    "incenteev/composer-parameter-handler": "^2.0",
    "sensio/distribution-bundle": "^5.0.19",
    "sensio/framework-extra-bundle": "^5.0.0",
    "symfony/monolog-bundle": "^3.1.0",
    "symfony/polyfill-apcu": "^1.0",
    "symfony/swiftmailer-bundle": "^2.6.4",
    "symfony/symfony": "3.4.*",
    "twig/twig": "^1.0||^2.0"
    },

    Dans app/config/config.yml, Doctrine est ainsi configuré:

    doctrine:
    dbal:
    driver: pdo_sqlite
    path: '%database_path%'
    user: '%database_user%'
    #memory: true
    charset: UTF8
    orm:
    auto_generate_proxy_classes: '%kernel.debug%'
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true


    en config_test.yml :


    doctrine:
    dbal:
    default_connection: test

    connections:
    test:
    driver: pdo_sqlite
    user: test
    path: %kernel.project_dir%/var/data/db.test.sqlite
    #memory: true
    charset: utf8

    en config_prod.yml:

    doctrine:
    dbal:
    default_connection: prod

    connections:
    prod:
    driver: pdo_sqlite
    user: prod
    path: %kernel.project_dir%/var/data/db.sqlite
    #memory: true
    charset: utf8

    Bien entendu  mon parameters.yml fait référence à la prod

    parameters:
    database_path: 'sqlite:///%kernel.project_dir%/var/data/db.sqlite'
    database_user: prod

    Et quand je cherche à mapper un objet, en test, c'est ok:

    $ php bin/console doctrine:schema:update --env=test --dump-sql
    CREATE TABLE user (id INTEGER NOT NULL, nom VARCHAR(255) NOT NULL, prenom VARCHAR(255) NOT NULL, roles VARCHAR(255) NOT NULL, PRIMARY KEY(id));

    et en prod je me prends toujours un "An exception occured in driver: SQLSTATE[HY000] [14] unable to open database file"

    J'ai poussé mon projet ici : https://gitlab.com/stef33560/newproject/

    Help siouplé !:(

    -
    Edité par Stef33560 14 octobre 2018 à 12:33:46

    • Partager sur Facebook
    • Partager sur Twitter
      14 octobre 2018 à 17:51:50

      Bonjour, en prod, php a t-il les droits de modification sur les dossiers qui contiennent ta base sqlite ?
      • Partager sur Facebook
      • Partager sur Twitter
      READ THE DOCS !
        14 octobre 2018 à 23:44:14

        Bingo c'était a priori... presque juste ça :waw: Merci pour l'aide apporteée !

        J'avais posé un lien symbolique dans mon /var/www/ qui pointait sur mon workspace.

        Ce workspace est sur un NAS, monté en NFS avec des droits en ... nobody:users

        Dans cette configuration, pas moyen de créerma base SQLIte de prod...juste de prod, incompréhensible !!

        ~/nas/workspace/newproject $ php bin/console doctrine:database:create --env=test
        Created database /home/xxx/nas/workspace/newproject/var/data/db.test.sqlite for connection named test
        
        ~/nas/workspace/newproject $ php bin/console doctrine:database:create --env=prod
        Could not create database sqlite:////home/xxx/nas/workspace/newproject/var/data/db.sqlite for connection named default
        An exception occured in driver: SQLSTATE[HY000] [14] unable to open database file
        

        Je prends tout mon bazar, je le copie sur mon ~ et là ...

        ~/newproject $ php bin/console doctrine:database:create --env=test
        Created database /home/xxx/newproject/var/data/db.test.sqlite for connection named test
        ~/newproject $ php bin/console doctrine:database:create --env=prod
        Created database /home/xxx/newproject/var/data/db.sqlite for connection named prod
        


        Ca fonctionne... mais pourquoi dans le premier cas seule une des deux bases étaient créée ? o_O

        Benh fallait ouvrir mes yeux.

        database_path: 'sqlite:///%kernel.project_dir%/var/data/db.sqlite'

        c'est pas

        path:   %kernel.project_dir%/var/data/db.test.sqlite

        Le premier NE fonctionne PAS.

        J'ai du modifier par mégarde un des deux fichiers, à force de bidouiller dans tous les sens...

        Bref... #boulay :honte:

        -
        Edité par Stef33560 15 octobre 2018 à 0:15:52

        • Partager sur Facebook
        • Partager sur Twitter

        Symfony3 - SQLITE Could not create database

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown