美文网首页
关于laravel使用docker数据库问题

关于laravel使用docker数据库问题

作者: 小山丘321 | 来源:发表于2018-02-03 22:47 被阅读0次

    最近在学习docker,刚好配好了mysql5.6.39,然后最近在接触学习laravel5.5,所以就直接用了这里的docker里面的数据库来进行练习,然后遇到了两个坑。

    1.Laravel 5.5默认使用utf8mb4字符编码,而不是之前的utf8编码。因此运行php artisan migrate 会出现如下错误:

    [Illuminate\Database\QueryException]

    SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))

    [PDOException]

    SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

    原因:

    Laravel 默认使用 utf8mb4 字符,它支持在数据库中存储「emojis」。如果你是在版本低于5.7.7 的 MySQL release 或者版本低于10.2.2 的 MariaDB release 上创建索引,那就需要你手动配置迁移生成的默认字符串长度。

    解决方案:

    a.创建数据库时直接设置utf8mb4-unicode_ci字符(这种情况是在mysql5.5.3后才可以设置)

    b.手动配置迁移命令migrate生成的默认字符串长度,在AppServiceProvider中调用Schema::defaultStringLength方法来实现配置:

    <?php

    namespace App\Providers;

    use Illuminate\Support\ServiceProvider;

    use Illuminate\Support\Facades\Schema;

    classAppServiceProvider extends ServiceProvider

    {

        /**

        * Bootstrap any application services.

        *

        * @return void

        */publicfunction boot()

        {

            Schema::defaultStringLength(191);

        }

        /**

        * Register any application services.

        *

        * @return void

        */publicfunction register()

        {

            //    }

    }

    2.SQLSTATE[HY000] [2002] Connection refused (SQL: select count(*) as aggregate from `users` where `email` =

    数据库配置如下:

    "driver" => "mysql"

    "host" => "127.0.0.1"

    "port" => "6606"

    "database" => "laravel-5.5"

    "username" => "root"

    "password" => "***"

    "unix_socket" => ""

    "charset" => "utf8mb4"

    "collation" => "utf8mb4_unicode_ci"

    "prefix" => ""

    "strict" => true

    "engine" => null

    "name" => "mysql"

    解决方案:

    然后各种搜索各种找,才发现是数据库的ip对不上,然后把host改成当前机器的ip就好了

    相关文章

      网友评论

          本文标题:关于laravel使用docker数据库问题

          本文链接:https://www.haomeiwen.com/subject/qpspzxtx.html