我刚刚从基于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的操作吗?
答案 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',
]
...