我刚刚从基于 Vagrant 的本地主机设置转移到正在运行的 Docker 安装程序:
- PHP 7.2.8
- PHP-FPM 7.2.8
- Mariadb 10.2.15 (webhippie/mariadb(
我执行了运行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)
我有另一个 Laravel 安装使用相同的 Docker 机器运行,并且进行迁移没有问题。
从 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
表。移除它会影响拉拉维尔的运营吗?
我想我得到了答案。
我把engine = 'innodb ROW_FORMAT=DYNAMIC'
定在config/database.php
.我很久以前在尝试修复 Laravel 的密钥太长错误时就这样做了。有一个简单的修复(在链接中(,它将字符串长度限制为 191。因此,要解决此问题,只需将engine = 'innodb'
或engine = 'null'
设置为config/databse.php
.
看看这个 https://laracasts.com/discuss/channels/eloquent/migrations-and-table-options-row-format?page=0
如果它不起作用,请告诉我
更改配置/数据库.php
'connections' => [
...
'mysql' => [
...
'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',
]
...