Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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'