我正在使用Laravel /流行,当我添加3个类并进行迁移时,它会给我带来错误。这里列出了3个类:
JordanMiguel\LaravelPopular\LaravelPopularServiceProvider::class,
Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
Illuminate\Auth\AuthServiceProvider:class,
在Connection.php第664行:
SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥 太长了最大密钥长度为1000个字节(SQL:alter table
visits
添加唯一visits_ip_visitable_id_visitable_type_date_unique
(ip
,visitable_id
,visitable_type
,date
))
在Connection.php第458行:
SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥 太长了最大密钥长度为1000字节
答案 0 :(得分:0)
在你的app \ Providers \ AppSErviceProvider.php文件中添加以下两行:
在顶部:
use Illuminate\Support\Facades\Schema
;
在启动功能中:
Schema::defaultStringLength(191);
更新: 看到你的评论不起作用后,你可能需要在你的phpmyadmin中运行下面的mysql查询(如果你有访问权限)。
CREATE TABLE `visits` (
`id` int(10) UNSIGNED NOT NULL,
`ip` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`visitable_id` int(11) NOT NULL,
`visitable_type` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`date` date NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `visits`
--
ALTER TABLE `visits`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `visits_ip_visitable_id_visitable_type_date_unique` (`ip`,`visitable_id`,`visitable_type`,`date`),
ADD KEY `visits_ip_index` (`ip`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `visits`
--
ALTER TABLE `visits`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;COMMIT;
这将为您创建表格,无需运行php artisan migrate
它不是完美的答案,但它暂时解决了你的问题。
答案 1 :(得分:0)
在AppServiceProvider
中,将此行添加到启动方法 -
public function boot()
{
Schema::defaultStringLength(191);
}