Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro ao criar o banco

Bom dia. Tive o seguinte erro ao rodar o commando orm:schema-tool:create

 Creating database schema...


In ToolsException.php line 19:

  Schema-Tool failed with Error 'An exception occurred in driver: SQLSTATE[HY000] [14] unable to open database file' while execu   
  ting DDL: CREATE TABLE Aluno (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, nome VARCHAR(255) NOT NULL)                         


In AbstractSQLiteDriver.php line 83:

  An exception occurred in driver: SQLSTATE[HY000] [14] unable to open database file  


In Exception.php line 18:

  SQLSTATE[HY000] [14] unable to open database file  


In PDOConnection.php line 40:

  SQLSTATE[HY000] [14] unable to open database file  


orm:schema-tool:create [--em EM] [--dump-sql]

Meu arquivo doctrine.php:

#!/usr/bin/env php
<?php

use Alura\Doctrine\Helper\EntityManagerFactory;
use Doctrine\ORM\Tools\Console\ConsoleRunner;
use Doctrine\ORM\Tools\Console\EntityManagerProvider\SingleManagerProvider;

require_once __DIR__ . '/../vendor/autoload.php';

// replace with mechanism to retrieve EntityManager in your app
$entityManager = EntityManagerFactory::getEntityManager();

// $commands = [
//     // If you want to add your own custom console commands,
//     // you can do so here.
// ];

ConsoleRunner::run(
    new SingleManagerProvider($entityManager)
);

Também não foi informado porque tiramos aquele código do início do arquivo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

5 respostas

unable to open database file

Ele não conseguiu abrir o arquivo do banco de dados. O caminho está correto? Você tem as permissões necessárias para o arquivo?

Ele não cria o arquivo sozinho? De qualquer forma tentei criar o arquivo aqui e mesmo assim não funcionou

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Qual o valor de $rootDir? Provavelmente tá faltando a / ali antes do primeiro ...

Sim, ele deve criar o arquivo sozinho sim, mas a pasta precisa existir e o caminho precisa estar correto.

Resolvi esse erro, mas estou tendo outro:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Minha classe EntityManagerFactory:

<?php

namespace Alura\Doctrine\Helper;

use Doctrine\ORM\ORMSetup;
use Doctrine\ORM\EntityManager;

class EntityManagerFactory
{

    public static function getEntityManager() : EntityManager
    {
        $rootDir = __DIR__ . "/../..";


        $config = ORMSetup::createAttributeMetadataConfiguration([$rootDir], true);

        $connection = [
            'driver' => 'pdo_sqlite', 
            'path' => $rootDir . '/var/data/banco.slite' 
        ];


        return EntityManager::create($connection, $config);
    }
}
solução!

Agora funcionou. Não sei direitinho o que eu fiz kkkk, mas meu arquivo EntityManagerFactory ficou assim:

<?php

namespace Alura\Doctrine\Helper;

use Doctrine\ORM\ORMSetup;
use Doctrine\ORM\EntityManager;

class EntityManagerFactory
{
    public static function getEntityManager() : EntityManager
    {

        $config = ORMSetup::createAttributeMetadataConfiguration(
            [__DIR__ . "/.."], true);

        $connection = [
            'driver' => 'pdo_sqlite', 
            'path' => __DIR__ . '/../../var/data/banco.slite' 
        ];


        return EntityManager::create($connection, $config);
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade