2013-09-28 20 views
10

Tentativo di utilizzare sqlite nell'ambiente di sviluppo. Sembra di rilevare l'ambiente in modo corretto, ma quando provo a migrare verso development.sqlite ottengo eccezione generata "database non esiste"database di sviluppo laravel database sqlite inesistente

comando artigianale

php artisan migrate --env=development 

bootstrap/start.php

$env = $app->detectEnvironment(array(

    'development' => array('localhost'), 

)); 

app/config/sviluppo/database.php

<?php 

return array(
    'default' => 'sqlite', 

    'connections' => array(
      'sqlite' => array(
      'driver' => 'sqlite', 
      'database' => __DIR__.'/../database/development.sqlite', 
      'prefix' => '', 
     ) 
    ) 
); 

Per quanto ne so laravel dovrebbe creare il file se non esiste, ma poiché non l'ho provato ho provato a creare manualmente il file e ottenere comunque l'eccezione generata.

UPDATE: Forse qualcosa non va bene con l'env perché la stessa cosa accade se provo ': memory' per il database.

UPDATE 2: Ho provato a fare funzionare il test di unità campione, ma di aggiungere TestCase.php

 /** 
    * Default preparation for each test 
    * 
    */ 
    public function setUp() 
    { 
     parent::setUp(); // Don't forget this! 

     $this->prepareForTests(); 
    } 

    /** 
    * Creates the application. 
    * 
    * @return Symfony\Component\HttpKernel\HttpKernelInterface 
    */ 
    public function createApplication() 
    { 
     $unitTesting = true; 

     $testEnvironment = 'testing'; 

     return require __DIR__.'/../../bootstrap/start.php'; 
    } 

    /** 
    * Migrates the database and set the mailer to 'pretend'. 
    * This will cause the tests to run quickly. 
    * 
    */ 
    private function prepareForTests() 
    { 
     Artisan::call('migrate'); 
     Mail::pretend(true); 
    } 

E anche questo dà la stessa eccezione anche se l'ENV testing è già fornito con laravel. Quindi vedrò se riesco a trovare nuovi problemi al riguardo.

risposta

21

Wow, errori di battitura e percorsi errati.

Copiare l'array SQLite da config/database.php in config/sviluppo/database.php Ho dimenticato di cambiare il percorso del file da development.sqlite

__DIR__.'/../database/development.sqlite' 

a

__DIR__.'/../../database/development.sqlite' 

e per la memoria testare avrebbe dovuto essere

':memory:' 

invece di

':memory' 
0

Bene, la mia risposta è un po 'datata, ma in ogni caso. Ho affrontato lo stesso problema, ma con Laravel 5, sto usando Windows 7 x64. In primo luogo ho creato manualmente database SQLite chiamato 'db' e messo in directory di archiviazione, poi fissa il mio file .env in questo modo:

APP_ENV=local 
APP_DEBUG=true 
APP_KEY=oBxQMkpqbENPb07bLccw6Xv7opAiG3Jp 

DB_HOST=localhost 
DB_DATABASE='db' 
DB_USERNAME='' 
DB_PASSWORD='' 

CACHE_DRIVER=file 
SESSION_DRIVER=file 
QUEUE_DRIVER=sync 

MAIL_DRIVER=smtp 
MAIL_HOST=mailtrap.io 
MAIL_PORT=2525 
MAIL_USERNAME=null 
MAIL_PASSWORD=null` 

ho pensato che sarebbe risolvere i miei problemi, ma la linea di comando continua a dirmi quel database non esiste E poi ho appena controllato il percorso di db nel mio file database.php e questo è il motivo per cui ho inserito il file di database nella directory di archiviazione. Ma nulla è cambiato. E infine ho controllato l'estensione di db ed era .db, non .sqlite come estensione predefinita che vedi nel tuo blocco sqlite in database.php. Quindi questo è come mi riconfigurato pezzo SQLite:

'sqlite' => [ 
    'driver' => 'sqlite', 
    'database' => storage_path().'/db.db', 
    'prefix' => '', 
], 

E naturalmente non dimenticate di impostare SQLite come database predefinito nel file database.php. In bocca al lupo!

2

ho notato che il mio file database.php ha avuto il seguente

'sqlite' => [ 
    'driver' => 'sqlite', 
    'database' => env('DB_DATABASE', database_path('database.sqlite')), 
    'prefix' => '', 
], 

ho cambiato per leggere quanto segue, e ha funzionato bene.

'sqlite' => [ 
    'driver' => 'sqlite', 
    'database' => database_path('database.sqlite'), 
    'prefix' => '', 
], 
+1

È possibile solo modificare il valore DB_DATABASE in .env nel percorso relativo del file sqlite –

1

Uno dei problemi che ho dovuto affrontare è stato io uso "tocco di stoccaggio/database.sqlite" nel terminale, in modo del database viene creato nella cartella di archiviazione invece di cartella di database.

nel mio config/database.php percorso è database_path ('database.sqlite')

'sqlite' => [ 
     'driver' => 'sqlite', 
     'database' => database_path('database.sqlite'), 
     'prefix' => '', 
    ], 

di quanto io uso il comando "php artigianale migrazione", che mi ha dato errore "Database (/ Applicazioni/MAMP/htdocs/FOLDER_NAME/database/database.sqlite) non esiste
non esiste. "

quindi è ovvio file di database non è nella cartella database come è stato generato nella cartella di archiviazione, in modo da copiare "database.sqlite" dalla cartella di archiviazione o eseguire il comando "database di tocco/database.sqlite"

Speranza che aiuta . !!

Problemi correlati