Laravel jordanmiguel/laravel-流行错误[重复]

Posted

技术标签:

【中文标题】Laravel jordanmiguel/laravel-流行错误[重复]【英文标题】:Laravel jordanmiguel/laravel-popular error [duplicate] 【发布时间】:2018-07-09 02:31:04 【问题描述】:

我正在使用 Laravel/popular,当我添加 3 个类并进行迁移时,它给了我错误。这里列出了 3 个类:

JordanMiguel\LaravelPopular\LaravelPopularServiceProvider::class,
Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
Illuminate\Auth\AuthServiceProvider:class,

Laravel popular

在 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 字节

【问题讨论】:

【参考方案1】:

在你的 app\Providers\AppSErviceProvider.php 文件中添加这两行:

在顶部: use Illuminate\Support\Facades\Schema;

开机函数内部:

Schema::defaultStringLength(191);

更新: 看到你的 cmets 不工作后,你可能需要在你的 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 它不是完美的答案,但它可以暂时解决您的问题。

【讨论】:

我已经添加了 @arun kumar 先生 关闭您的终端或腻子,然后再次打开。如果没有帮助,请运行“composer dump-autoload” 还是一样 :( 。我试过 cache:clear , dump-autoload 。还是一样的错误 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table visits` 添加唯一的visits_ip_visitable_id_visitable_type_d ate_unique(ip, visitable_id, visitable_type, date))` @М.Билгүүн,看看更新的答案【参考方案2】:

在您的AppServiceProvider 中,将此行添加到启动方法-

public function boot()

    Schema::defaultStringLength(191);

【讨论】:

我已经添加了,先生 请在您遇到错误的地方添加您的迁移文件,您的 laravel 版本是什么?? github.com/jordanmiguel/laravel-popular 请检查一下先生。我加了 3 节课。并尝试运行迁移,它给了我错误我没有任何迁移文件 您没有更改此文件的任何内容,对吧??

以上是关于Laravel jordanmiguel/laravel-流行错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:laravel 可翻译插件

win 怎么laravel命令

laravel 安装失败

laravel validator怎么验证整数

Laravel 图像规则验证不适用于 Laravel 8,但适用于 Laravel 7 |拉拉维尔 |图片 |验证

laravel和mongo怎么搭配使用