PHP 致命错误:在我修复错误 Laravel 迁移后找不到类“App\Providers\ServiceProvider”:唯一键太长,

Posted

技术标签:

【中文标题】PHP 致命错误:在我修复错误 Laravel 迁移后找不到类“App\\Providers\\ServiceProvider”:唯一键太长,【英文标题】:PHP Fatal error: Class 'App\Providers\ServiceProvider' not found, after I fixed err Laravel migration: unique key is too long,PHP 致命错误:在我修复错误 Laravel 迁移后找不到类“App\Providers\ServiceProvider”:唯一键太长, 【发布时间】:2018-01-28 05:41:26 【问题描述】:

我刚开始学习 Laravel 5.4 并尝试在 Laravel 中迁移用户表。当我运行迁移时,出现此错误:

[Illuminate\Database\QueryException] SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节

在关注this tutorial之后,我现在又遇到了一个错误:

php 致命错误:找不到类“App\Providers\ServiceProvider”

我的迁移代码是

use Illuminate\Support\Facades\Schema;

public function boot()

    //
    Schema::defaultStringLength(191);

我做错了什么?

【问题讨论】:

您是创建了一个新的服务提供者并将上面的代码放入其中,还是将上面的代码放入了AppServiceProvider 类中?无论哪种方式,您能否发布文件的完整代码并识别它,这可能有助于我们帮助您解决问题。 我的代码在 AppServiceProvider 类中,我的整个代码是...,,, 你的AppServiceProvider 类中是否还有use Illuminate\Support\ServiceProvider; 语句? 不,我将其更改为此代码“使用 Illuminate\Support\Facades\Schema;” 不要替换任何东西,只是添加文章中的新东西。所以也保留之前的代码。 【参考方案1】:

问题是您缺少标识ServiceProvider 类所在位置的use 语句。由于AppServiceProvider 类扩展了ServiceProvider,但没有use 语句,PHP 假定该类可以在与AppServiceProvider 相同的命名空间中找到。这就是它找不到\App\Providers\ServiceProvider 的原因——因为\App\ProvidersAppServiceProvider 类的命名空间。

试试这个

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    
        Schema::defaultStringLength(191);
    

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    
        //
    

【讨论】:

很好的解释 非常感谢@stratedge,它只能通过添加'use Illuminate\Support\ServiceProvider;'来工作使用我的代码,我做错的是改变而不是添加'use Illuminate\Support\Facades\Schema;'再次感谢您解决问题。

以上是关于PHP 致命错误:在我修复错误 Laravel 迁移后找不到类“App\Providers\ServiceProvider”:唯一键太长,的主要内容,如果未能解决你的问题,请参考以下文章

运行 php artisan serve 命令时,laravel 无法打开流致命错误

如何修复wordpress中的php致命错误和http错误500

Laravel 4:PHP 致命错误:调用未定义的方法 Blueprint::int()

安装Laravel收银员的PHP致命内存错误[重复]

Laravel - PHP 致命错误:在迁移中找不到类“CreateMatchesTable”:刷新

如何解决 PHP 致命错误:未捕获的错误:在 laravel 版本更新时调用未定义的方法 Illuminate\Container\Container::basePath() 错误?