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

Exception em migrate com SQLITE

Estou com a exception abaixo após executar php artisan migrate:

Illuminate\Database\QueryException : could not find driver (SQL: PRAGMA foreign_keys = ON;)

at /mnt/c/Users/m_ari/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664 660| // If an exception occurs when attempting to run a query, we'll format the error 661| // message to include the bindings with SQL, which will make this exception a 662| // lot more helpful to the developer instead of just the database's errors. 663| catch (Exception $e) {

664| throw new QueryException( 665| $query, $this->prepareBindings($bindings), $e 666| ); 667| } 668|

Exception trace:

1 PDOException::("could not find driver") /mnt/c/Users/m_ari/laravel/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

2 PDO::_construct() /mnt/c/Users/mari/laravel/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

Please use the argument -v to see more details.


Ao executar o comando php --ini tenho as extensões abaixo instaladas: OBS: Meu arquivo php.ini está com a extension=pdo_sqlite descomentada.

php --ini Configuration File (php.ini) Path: /etc/php/7.4/cli Loaded Configuration File: /etc/php/7.4/cli/php.ini Scan for additional .ini files in: /etc/php/7.4/cli/conf.d Additional .ini files parsed: /etc/php/7.4/cli/conf.d/10-opcache.ini, /etc/php/7.4/cli/conf.d/10-pdo.ini, /etc/php/7.4/cli/conf.d/15-xml.ini, /etc/php/7.4/cli/conf.d/20-calendar.ini, /etc/php/7.4/cli/conf.d/20-ctype.ini, /etc/php/7.4/cli/conf.d/20-dom.ini, /etc/php/7.4/cli/conf.d/20-exif.ini, /etc/php/7.4/cli/conf.d/20-ffi.ini, /etc/php/7.4/cli/conf.d/20-fileinfo.ini, /etc/php/7.4/cli/conf.d/20-ftp.ini, /etc/php/7.4/cli/conf.d/20-gettext.ini, /etc/php/7.4/cli/conf.d/20-iconv.ini, /etc/php/7.4/cli/conf.d/20-json.ini, /etc/php/7.4/cli/conf.d/20-mbstring.ini, /etc/php/7.4/cli/conf.d/20-phar.ini, /etc/php/7.4/cli/conf.d/20-posix.ini, /etc/php/7.4/cli/conf.d/20-readline.ini, /etc/php/7.4/cli/conf.d/20-shmop.ini, /etc/php/7.4/cli/conf.d/20-simplexml.ini, /etc/php/7.4/cli/conf.d/20-sockets.ini, /etc/php/7.4/cli/conf.d/20-sysvmsg.ini, /etc/php/7.4/cli/conf.d/20-sysvsem.ini, /etc/php/7.4/cli/conf.d/20-sysvshm.ini, /etc/php/7.4/cli/conf.d/20-tokenizer.ini, /etc/php/7.4/cli/conf.d/20-xmlreader.ini, /etc/php/7.4/cli/conf.d/20-xmlwriter.ini, /etc/php/7.4/cli/conf.d/20-xsl.ini

O que pode ser?

3 respostas

Qual a versão do Laravel que você está usando? Sei que por padrão o SQLite não vem com o recurso de foreign key habilitado, mas o Laravel habilita ele através do config/database.php. Só não sei se isso ocorre em todas as versões, ou se é um recurso adicionado em versões mais recentes.

Verifique no arquivo config/database.php se o array de configuração do SQLite tem a chave 'foreign_key_constraints' e que o mesmo tenha o valor true.


        'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DATABASE_URL'),
            'database' => env('DB_DATABASE', database_path('db.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
        ],

Verifique também seu arquivo .env.

Pode ser que nele tenha o parâmetro DB_FOREIGN_KEYS como false.


Caso você esteja usando Linux, pode ser que não tenha a extensão do SQLite instalada, uma vez que não basta apenas descomentar a extensão via php.ini.

Tenta dar um apt get install php-sqlite se vc estiver em algum derivado do Debian/Ubuntu, ou dnf install php-sqlite caso esteja no Fedora, e tente novamente.

Além da extensão SQLite, verifique também se você tem instaladas as extensões informadas na documentação do Laravel na parte de 'Server Requirements'. https://laravel.com/docs/8.x/installation.

solução!

Maria, você instalou o PHP através do apt?

Tenta rodar?

sudo apt install php74-sqlite

Se não for esse o nome do pacote, roda um

apt-cache search php | grep sqlite

e vê o nome real do pacote.

Após instalar, me diz se resolveu...

Obrigada pelas respostas, o que funcionou para mim foi a instalação do pacote sqlite3 para o php7.4 !