首页 > 解决方案 > 运行 php artisan migrate 后未创建数据库表

问题描述

我正在使用 laravel 5.7,我注意到在运行 php artisan migrate 后没有创建我的数据库表,即使我的 .env 已正确更新并且从我的角度来看一切似乎都非常正确。

经过大量研究,我偶然发现了一个视频,说我必须去 AppServiceProver.php 并添加一些代码行,如下所示:

从以下位置更新 AppServiceProver.php:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
       //
    }

    /**
     * Register any application services.

至:

<?php

namespace App\Providers; 

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

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);
    }

    /**
     * Register any application services.

在第 6 行添加了一行代码(使用 Illuminate\Support\Facades\Schema;),并在第 17 行调用了 Schema(Schema::defaultStringLength(191);)。

我立即将这些代码行添加到我的 AppServiceProver.php 中,然后运行​​php artisan migrate;我所有的表都是立即在我的数据库上创建的。

但对我作为一个学习者来说不幸的是,这个人说他不知道为什么一开始没有创建表格以及为什么必须将代码添加到AppServiceProvider.php。他有错误并且也偶然发现了答案。

作为一名学习者,我很好奇,想知道为什么我遇到了这个挑战,以及为什么这些代码行解决了这些问题。

非常感谢您的友好回答。

标签: phplaravel

解决方案


你必须设置 defaultStringLength 来切换字符集,utf8mb4 utf8mb4 字符集很有用,因为现在我们不仅需要支持存储语言字符,还需要存储符号、新引入的表情符号等。希望你明白了!


推荐阅读