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

Erro ao executar " vendor\bin\doctrine.bat orm:schema-tool:create "

Boa tarde, pessoal

Fui tentar executar o comando vendor\bin\doctrine.bat orm:schema-tool:create e apareceu o seguinte erro:

Creating database schema...

In ToolsException.php line 33:

Schema-Tool failed with Error 'An exception occurred in driver: could not find driver' while executing DDL: CREATE TABLE Aluno (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, nome VARCHAR(255) NOT NULL)

In AbstractSQLiteDriver.php line 86:

An exception occurred in driver: could not find driver

In Exception.php line 18:

could not find driver

No php.ini eu já habilitei o pdo_sqlite e a estrutura var/data existe também. Esqueci de habilitar algo?

11 respostas

José, como está o código que cria o EntityManager?

Boa tarde, Vinícius

O código está assim:

namespace Alura\Doctrine\Helper;

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

class EntityManagerFactory {

    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);

    }

}

Faltou uma barra depois do $rootDir, José.

Mas isso não é o motivo real do erro. Me mostra qual a saída do comando php -m, por favor?

Apareceram estes módulos

[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
filter
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
Phar
readline
Reflection
session
SimpleXML
SPL
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]

pdo_sqlite não tá na lista, então você não habilitou corretamente a extensão. =/

Exatamente como você fez pra habilitar?

Eu fui diretamente no php.ini do Xampp. tem algum outro lugar pra habilitá-lo ?

Você tá usando xampp? Hmm

Provavelmente vai ter que configurar o extension_dir, então.

Encontra essa entrada no php.ini referente ao Windows e descomenta ela. Depois vê se pdo_sqlite aparece na lista de php -m

Descomentei estas duas linhas e reiniciei o serviço, mas ainda não exibe o pdo_sqlite

extension_dir="C:\xampp\php\ext"
sqlite3.extension_dir = "C:\xampp\php\windowsXamppPhp\ext"

O sqlite3.extension_dir não precisa.

Na pasta C:\xampp\php\ext existe o arquivo php_pdo_sqlite.dll?

Se sim, provavelmente você tá editando o arquivo php.ini errado. Pra descobrir qual o arquivo certo, executa php --ini

Senão, aí é um problema do XAMPP que não vem com essa extensão.

Vinícius, reinstalei o Xampp e funcionou.

[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
Reflection
session
SimpleXML
SPL
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]

No caso, agora é colocar mais uma barra em $rootDir ?

solução!

Aqui falta a barra antes do var:

            'path' => $rootDir . 'var/data/banco.sqlite'

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