#laravel #sqlite #eloquent #laravel-seeding
Вопрос:
Я начал разработку нового проекта Laravel.
Я установил файл .env и database.php файл, файл миграции и файл сеялки.
Я добился успеха в миграции, но потерпел неудачу в посеве. Я получил следующую ошибку, когда запустил php artisan db:seed.
SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected (SQL: insert into `caeru_local_companies` (`code`, `name`, `furigana`, `date_separate_type`, `u se_address_system`, `updated_at`, `created_at`) values ............
Я проверил, что таблица caeru_local_companies существует в моей базе данных.
И мой файл .env находится
APP_ENV=local APP_KEY=base64:ONZDpAFdncYcyqYontvOB4kjwoioEzIHjF5QKDAaO4E= APP_URL=http://localhost APP_DEBUG=true APP_LOG=single APP_LOG_LEVEL=debug LOG_MAX_FILES=5 MAIN_DB_CONNECTION=main MAIN_DB_HOST=127.0.0.1 MAIN_DB_PORT=3306 MAIN_DB_DATABASE=caeru_main MAIN_DB_PREFIX=caeru_local_ MAIN_DB_USERNAME=root MAIN_DB_PASSWORD= SUB_DB_HOST=127.0.0.1 SUB_DB_PORT=3306 SUB_DB_USERNAME=root SUB_DB_PASSWORD= SUB_DB_PREFIX=caeru_local_ BROADCAST_DRIVER=log CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=database REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= DEBUGBAR_ENABLED=false REDIRECT_HTTPS=false
И, мой database.php конфигурационный файл является
lt;?php return [ /* |---------------------------------------------------------------------- | Default Database Connection Name |---------------------------------------------------------------------- | | Here you may specify which of the database connections below you wish | to use as your default connection for all database work. Of course | you may use many connections at once using the Database library. | */ 'default' =gt; env('MAIN_DB_CONNECTION', 'main'), /* |-------------------------------------------------------------------------- | Database Connections |-------------------------------------------------------------------------- | | Here are each of the database connections setup for your application. | Of course, examples of configuring each database platform that is | supported by Laravel is shown below to make development simple. | | | All database work in Laravel is done through the PHP PDO facilities | so make sure you have the driver for your particular database of | choice installed on your machine before you begin development. | */ 'connections' =gt; [ // 'sqlite' =gt; [ // 'driver' =gt; 'sqlite', // 'database' =gt; env('DB_DATABASE', database_path('database.sqlite')), // 'prefix' =gt; '', // ], 'main' =gt; [ 'driver' =gt; 'mysql', 'host' =gt; env('MAIN_DB_HOST', '127.0.0.1'), 'port' =gt; env('MAIN_DB_PORT', '3306'), 'database' =gt; env('MAIN_DB_DATABASE', 'caeru_main'), 'username' =gt; env('MAIN_DB_USERNAME', 'root'), 'password' =gt; env('MAIN_DB_PASSWORD', ''), 'charset' =gt; 'utf8', 'collation' =gt; 'utf8_unicode_ci', 'prefix' =gt; env('MAIN_DB_PREFIX', 'caeru_local_'), 'strict' =gt; true, 'engine' =gt; null, ], 'sub' =gt; [ 'driver' =gt; 'mysql', 'host' =gt; env('SUB_DB_HOST', '127.0.0.1'), 'port' =gt; env('SUB_DB_PORT', '3306'), 'database' =gt; '', 'username' =gt; env('SUB_DB_USERNAME', 'root'), 'password' =gt; env('SUB_DB_PASSWORD', ''), 'charset' =gt; 'utf8', 'collation' =gt; 'utf8_unicode_ci', 'prefix' =gt; env('SUB_DB_PREFIX', 'caeru_'), 'strict' =gt; true, 'modes' =gt; [ //'ONLY_FULL_GROUP_BY', // Disable this to allow grouping by one column 'STRICT_TRANS_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_AUTO_CREATE_USER', 'NO_ENGINE_SUBSTITUTION' ], 'engine' =gt; null, // This is a customized config item, should set it exactly the same as 'prefix' 'default_prefix' =gt; env('SUB_DB_PREFIX', 'caeru_'), ], // 'pgsql' =gt; [ // 'driver' =gt; 'pgsql', // 'host' =gt; env('DB_HOST', '127.0.0.1'), // 'port' =gt; env('DB_PORT', '5432'), // 'database' =gt; env('DB_DATABASE', 'forge'), // 'username' =gt; env('DB_USERNAME', 'forge'), // 'password' =gt; env('DB_PASSWORD', ''), // 'charset' =gt; 'utf8', // 'prefix' =gt; '', // 'schema' =gt; 'public', // 'sslmode' =gt; 'prefer', // ], ], /* |-------------------------------------------------------------------------- | Migration Repository Table |-------------------------------------------------------------------------- | | This table keeps track of all the migrations that have already run for | your application. Using this information, we can determine which of | the migrations on disk haven't actually been run in the database. | */ 'migrations' =gt; 'migrations', /* |-------------------------------------------------------------------------- | Redis Databases |-------------------------------------------------------------------------- | | Redis is an open source, fast, and advanced key-value store that also | provides a richer set of commands than a typical key-value systems | such as APC or Memcached. Laravel makes it easy to dig right in. | */ 'redis' =gt; [ 'client' =gt; 'predis', 'default' =gt; [ 'host' =gt; env('REDIS_HOST', '127.0.0.1'), 'password' =gt; env('REDIS_PASSWORD', null), 'port' =gt; env('REDIS_PORT', 6379), 'database' =gt; 0, ], ],
];
Я много раз пробовал, что предлагали другие разработчики, но ошибка остается.
Как я могу исправить эту ошибку?
Комментарии:
1. Можем ли мы посмотреть, как вы делаете вызов базы данных в сеялке ?
Ответ №1:
Я думаю, что вы неправильно используете MAIN_DB_PREFIX. Он не добавил префикс к имени базы данных, вместо этого он добавляет префикс к таблицам базы данных. Поэтому вам нужно добавить полное имя базы данных в раздел MAIN_DB_DATABASE.
Комментарии:
1. Привет, Акбани,что ты имеешь в виду под «БАЗОЙ данных MAIN_DB_DATABASE»? Мое имя базы данных caeru_main.
2. Извини, я виноват. Я не правильно понял ваш вопрос. Я погуглил его и все еще не могу найти решение вашей проблемы.