Когда я запустил команду seed, я получил ошибку «SQLSTATE[3D000]: Неверное имя каталога: 1046 База данных не выбрана»

#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. Извини, я виноват. Я не правильно понял ваш вопрос. Я погуглил его и все еще не могу найти решение вашей проблемы.