工匠迁移错误140错误的创建选项

时间:2018-08-20 06:42:45

标签: laravel docker mariadb laravel-5.5

我刚刚从基于Vagrant的localhost设置迁移到运行的Docker设置:

我执行了运行FPM的Docker计算机,并执行了php artisan migrate,但是遇到了以下错误:

SQLSTATE[HY000]: General error: 1005 Can't create table `data`.`migrations` (errno: 140 "Wrong create options") (SQL: create table `migrations` (`id` int unsigned not null auto_increment primary key, `migration` varchar(191) not null, `batch` int not null) default character set utf8mb4 collate utf8mb4_unicode_ci engine = InnoDB ROW_FORMAT=DYNAMIC)

我在同一台Docker机器上又安装了一个Laravel安装程序,并且进行迁移没有问题。

从erorr消息看来,Laravel创建迁移表期间出现错误。我不知道下一步该怎么做。帮助吗?


更新:

尝试运行创建查询:

create table `migrations` (`id` int unsigned not null auto_increment primary key, `migration` varchar(191) not null, `batch` int not null) default character set utf8mb4 collate utf8mb4_unicode_ci engine = InnoDB ROW_FORMAT=DYNAMIC

删除选项ROW_FORMAT=DYNAMIC成功创建了migrations表。删除它会影响Laravel的操作吗?

2 个答案:

答案 0 :(得分:0)

我想我得到了答案。

我将engine = 'innodb ROW_FORMAT=DYNAMIC'设置为config/database.php。我很久以前在尝试修复Laravel's key too long error时就这样做了。有一个简单的修复程序(在链接中),将字符串长度限制为191。因此,要解决此问题,只需在engine = 'innodb'上设置engine = 'null'config/databse.php

答案 1 :(得分:0)

检查一下 https://laracasts.com/discuss/channels/eloquent/migrations-and-table-options-row-format?page=0

让我知道它是否不起作用

更改config / database.php

'connections' => [
...
'mysql' => [
    ...
    'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',
]
...