Я пытаюсь установить приложение laravel 5.7.19 в Docker и запустить миграцию. Я получил ошибку:
Migrating: 2018_01_01_145312_create_settings_table
Specified key was too long
Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `settings` add unique `settings_name_unique`(`name`))
at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
660| // If an exception occurs when attempting to run a query, we'll format the error
661| // message to include the bindings with SQL, which will make this exception a
662| // lot more helpful to the developer instead of just the database's errors.
663| catch (Exception $e) {
> 664| throw new QueryException(
665| $query, $this->prepareBindings($bindings), $e
666| );
667| }
668|
Exception trace:
, где настройки определены как:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateSettingsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('settings', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->string('name', 255)->unique();
$table->string('value', 255);
$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->nullable();
$table->index(['created_at'], 'settings_created_at_index');
});
Artisan::call('db:seed', array('--class' => 'SettingsWithInitData'));
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('settings');
}
}
Файл сеялки, которыйТриггером является Votes / database / seed / SettingsWithInitData.php, в котором есть строки:
public function run()
{
DB::table('settings')->insert([
'name' => 'site_name',
'value' => 'Select & Vote',
]);
DB::table('settings')->insert([
'name' => 'copyright_text',
'value' => '© 2018 - 2018 All rights reserved',
]);
DB::table('settings')->insert([
'name' => 'elastic_automation',
'value' => 'N',
]);
Ни одно из полей настройки-> name не содержит более 40 символов, и у меня не было проблем в моей ламповой системе.
В phpmyadmin я создал новую базу данных с utf8_general_ci.
Проверка созданной таблицы в phpmyadmin Я не вижу уникального индекса в поле имени: https://imgur.com/a/2RfeyGn SHOW VARIABLES имеет большой вывод, который из них можетиметь значение в этом случае?
Что не так?
Мой docker-compose.yml содержит строки:
version: '3.1'
services:
web:
build:
context: ./web
dockerfile: Dockerfile.yml
environment:
- APACHE_RUN_USER=www-data
volumes:
- ${APP_PATH_HOST}:${APP_PTH_CONTAINER}
ports:
- 8081:80
working_dir: ${APP_PTH_CONTAINER}
db:
image: mysql:5.6.41
restart: always
environment:
MYSQL_ROOT_PASSWORD: 1
volumes:
- ${DB_PATH_HOST}:/var/lib/mysql
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 8082:80
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: 1
composer:
image: composer:1.8
volumes:
- ${APP_PATH_HOST}:${APP_PTH_CONTAINER}
working_dir: ${APP_PTH_CONTAINER}
command: composer install --ignore-platform-reqs
Спасибо!