Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Erro ao utilizar o comando orm:schema-tool:create

Olá, ao tentar realizar o comando vendor\bin\doctrine.bat orm:schema-tool:create o php me retornou o seguinte erro:

 !
 ! [CAUTION] This operation should not be executed in a production environment!
 !

 Creating database schema...


In ToolsException.php line 34:

  Schema-Tool failed with Error 'An exception occurred in driver: SQLSTATE[HY000] [14] unable to open database file'
  while executing DDL: CREATE TABLE Aluno (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name 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 38:

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


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

Segue abaixo o código das classes que tenho criadas:

EntityFactoryManager:

<?php

namespace Alura\Doctrine\Helper;

use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\ORMException;
use Doctrine\ORM\Tools\Setup;

class EntityManagerFactory
{
    /**
     * @return EntityManagerInterface
     * @throws ORMException
     */
    public function getEntityManager(): EntityManagerInterface
    {
        $rootDir = __DIR__ . '/../..';
        $config = Setup::createAnnotationMetadataConfiguration([$rootDir . '/src'], true);
        $connection = ['driver' => 'pdo_sqlite', 'path' => $rootDir . '/var/data/banco.sqlite'];
        return EntityManager::create($connection, $config);
    }
}

Quanto a estrutura das pastas, está da seguinte forma:

projeto-doctrine
->src
       -> Entity
               Aluno.php
       -> Helper
               EntityManagerFactory.php
->vendor
[...demais arquivos]

O que poderia estar causando estes erros?

2 respostas

Criou a pasta var/data ?

solução

Olá, Vinicius. Sim a pasta estava criada, eu havia esquecido de citar ela anteriormente. Não consegui identificar exatamente qual foi o problema, mas após várias tentativas, acabou funcionando após remover o arquivo banco.sqlite e cria-lo manualmente, apesar de já ter feito isso anteriormente, mas desta vez funcionou. Obrigado pela atenção.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software