【问题标题】:PHP Laravel migrate SQL issue [duplicate]PHP Laravel迁移SQL问题[重复]
【发布时间】:2018-10-21 07:53:21
【问题描述】:

当我在我的 laravel 项目中在 cmd 上执行 php artisan migrate 时。我收到以下错误。请帮忙。

【问题讨论】:

    标签: php sql laravel


    【解决方案1】:
    laravel 5.4.* file location : app/Providers/AppServiceProvider.php
    

    AppServiceProvider.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.
         *
         * @return void
         */
        public function register()
        {
            //
        }
    }
    

    之后执行 migrate Artisan 命令:

    php artisan migrate
    

    【讨论】:

      【解决方案2】:

      您可能遇到了索引长度配置。

      laravel documentation 声明如下

      Laravel 默认使用 utf8mb4 字符集,其中包括支持在数据库中存储“表情符号”。如果您运行的 MySQL 版本早于 5.7.7 版本或 MariaDB 版本早于 10.2.2 版本,您可能需要手动配置迁移生成的默认字符串长度,以便 MySQL 为其创建索引。您可以通过在 AppServiceProvider 中调用 Schema::defaultStringLength 方法来配置它:

      use Illuminate\Support\Facades\Schema;
      
      /**
       * Bootstrap any application services.
       *
       * @return void
       */
      public function boot()
      {
          Schema::defaultStringLength(191);
      }
      

      【讨论】:

        【解决方案3】:

        在位于 (app/Providers) 的 AppServiceProvider.php 中添加这个

        use Illuminate\Support\Facades\Schema;
        
        public function boot()
        {
            Schema::defaultStringLength(191);
        }
        

        【讨论】:

          【解决方案4】:

          由于电子邮件使用unique()而发生错误,但它不知道您的唯一值有多长。您有两种方法可以解决此问题

          第一个在你的 App\Providers\AppServiceProvider.php 中全局设置,然后在启动方法中添加你的代码:

          use Illuminate\Support\Facades\Schema;
          
          public function boot()
          {
              Schema::defaultStringLength(191);
          }
          

          第二个只在你的迁移表中设置,你只需要指定字符串的长度如:

          $table->string('email', 191)->unique();
          

          【讨论】:

            猜你喜欢
            • 2018-10-18
            • 2019-05-24
            • 2016-01-03
            • 2016-05-22
            • 2017-07-14
            • 2017-01-22
            • 2017-12-12
            • 1970-01-01
            • 2021-08-20
            相关资源
            最近更新 更多