I try to install my laravel 5.7.19 application under docker and running migration I got error:
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:
where settings defined as :
<?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');
}
}
The seeder file which is triggered is Votes/database/seeds/SettingsWithInitData.php, which has rows :
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',
]);
None of settings->name field has more 40 chars and I did not have any problems on my lamp system.
In phpmyadmin I created new database with utf8_general_ci.
Checking created table in phpmyadmin I do not see unique index on name field : https://imgur.com/a/2RfeyGn SHOW VARIABLES has big output, which of them can be meaning in this case ?
What is wrong?
My docker-compose.yml has rows :
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
Thanks!
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire