Como fazer o SQLite funcionar no Laravel
Sempre que corrophp artisan migrate
, o seguinte erro é mostrado no console:
[PDOException]
SQLSTATE [HY000] [14] não foi possível abrir o arquivo de banco de dados
odatabase.sqlite arquivo está localizado embase de dados/. Estou correndoWindows 10, Laravel 5.2. Aqui está.env configuração do arquivo:
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=homestead
DB_PASSWORD=secret
Procurei em todos os lugares, mas não consegui encontrar o que causa esse erro e como resolvê-lo.
AtualizarConsegui fazer as migrações executadas com êxito substituindoDB_DATABASE=database
comDB_DATABASE=database/database.sqlite
no.env Arquivo. No entanto, um novo erro ocorre sempre que tento recuperar itens do banco de dados:
public function index()
{
// cause of the error
$cards = Card::all();
return view('cards.index', compact('cards'));
}
A ação acima gera o seguinte erro:
InvalidArgumentException na linha SQLiteConnector.php 34:
O banco de dados (database / database.sqlite) não existe.
O estranho é que o comandoCard::all()
funciona perfeitamentephp artisan tinker
modo. Que tipo de mágica é essa?
Enfim, eu também descobri, que a linha:
'database' => env('DB_DATABASE', database_path('database.sqlite')),
nodatabase.php arquivo precisa ser substituído por apenasdatabase_path('database.sqlite')
etudo começa a funcionar normalmente.
Parece que a raiz do problema éenv('DB_DATABASE')
ligar. eu fui paraSQLiteConnector.php arquivo e despejou a saída de ambosenv('DB_DATABASE')
edatabase_path('database.sqlite')
. Aqui estão suas saídas, respectivamente:
dd(env('DB_DATABASE')) // => 'database/database.sqlite'
dd(database_path('database.sqlite')) // => 'D:\www\project\database\database.sqlite'
Como você vê, a saída deles é diferente, e o segundo é o que é esperado. Isso é um bug do Laravel? Ou eu entendi algo errado?