Настройка подключения к базе данных

Перед тем, как приступить к работе с миграциями, необходимо настроить соедниение с базой данных.

Для этого на хостинге создаем новую базу данных.

После этого прописываем необходимые доступы в файле config/database.php. Так как мы будем работать с mysql, то все настройки прописываем для этого типа соединения.

host' => env('DB_HOST', 'адрес сервера'),
...
'database' => env('DB_DATABASE', 'база данных'),
'username' => env('DB_USERNAME', 'имя пользователя'),
'password' => env('DB_PASSWORD', 'пароль'),

После этого прописываем эти же данные в файле .env в корне проекта

DB_HOST=адрес сервера
DB_PORT=3306
DB_DATABASE=база данных
DB_USERNAME=имя пользователя
DB_PASSWORD=пароль

Обратите внимание, что в файле .env учетные данные можно указывать без кавычек, но если пароль содержит символ #, то без кавычек может появлятся ошибка.

После этого запускаем первую миграцию командой

php artisan migrate

Если были какие-то ошибки при указании учетных данных, может появится ошибка:

php artisan migrate - SQLSTATE[HY000] [1045] Access denied for user

Проверьте еще раз учетные данные, исправьте ошибки, поставьте кавычки для пароля и заново запустите миграцию, перед этим выполнив команды:

php artisan config:clear 
php artisan cache:clear

Снова запускаем

php artisan migrate

И у меня появляется опять ошибка, в этот раз

Laravel Migration Error: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Причина этой ошибки в базе данных. Дело в том, что на моем хостинге базы данных по умолчнию создаются с кодировкой utf8_unicode_ci, а laravel создает конфигурационный файл config/database.php со следующей кодировкой:

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

Соответственно эти строки нужно заменить на:

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',

После этого можно еще раз запускать artisan

php artisan migrate

В случае успеха выведется сообщение на подобии этого:

Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (20.59ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (20.76ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (21.39ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated:  2019_12_14_000001_create_personal_access_tokens_table (33.06ms)
Migrating: 2021_12_19_153331_create_tasks_table
Migrated:  2021_12_19_153331_create_tasks_table (10.16ms)
[flatserv@hosting]$ php artisan migrate
Nothing to migrate.

И в нашей базе данных появятся новые таблицы, failed_jobsmigrations password_resets personal_access_tokens tasks users, которые Laravel создает по умолчанию.