Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查配置文件中的MySQL/MariaDB版本?_Php_Mysql_Laravel - Fatal编程技术网

Php 如何检查配置文件中的MySQL/MariaDB版本?

Php 如何检查配置文件中的MySQL/MariaDB版本?,php,mysql,laravel,Php,Mysql,Laravel,我遇到的问题是,当我运行数据库迁移时,由于此行和一些其他索引,当字符集为utf8mb4时会出现错误: $table->string('taggable_type', 255)->index(); 因此,我认为如果我可以通过检查使用哪个MySQL版本来修改config/database.php中用于utf8的字符集,那么这个问题就可以得到解决 我想做一个原始查询,比如: \Illuminate\Support\Facades\DB::raw('SHOW VARIABLES LIKE

我遇到的问题是,当我运行数据库迁移时,由于此行和一些其他索引,当字符集为
utf8mb4
时会出现错误:

$table->string('taggable_type', 255)->index();
因此,我认为如果我可以通过检查使用哪个MySQL版本来修改config/database.php中用于utf8的字符集,那么这个问题就可以得到解决

我想做一个原始查询,比如:

\Illuminate\Support\Facades\DB::raw('SHOW VARIABLES LIKE "%version%"');
内部
config/database.php
。现在我收到的错误是

A facade root has not been set.
我如何解决这个问题

是的,我试过设置
Schema::defaultStringLength(191)
在我的AppServiceProvider的引导方法中,我也尝试了
'engine'=>'InnoDB ROW_FORMAT=DYNAMIC'
,但我仍然收到指定的密钥太长的消息,我认为这可能是由于MySQL 5.5造成的


对于如何在配置文件中检查MySQL版本的任何帮助或对不同方法的提示,我们都将不胜感激。

因为
utf8
utf8mb4
之间有着真正的区别(前者不能代表大量可能的Unicode字符),您需要决定是否需要utf8mb4。如果您不支持,并且希望该选项支持较旧的MySQL版本,那么只需使用
utf8
。另一方面,如果您确实需要
utf8mb4
来保证应用程序的正确运行,那么请坚持使用
utf8mb4
,并确保您运行的数据库支持它。

以下内容自2014年5月5日起提供

  • 设置innodb文件格式=梭鱼
  • 设置
    innodb\u large\u prefix=1
  • 这还需要
    'engine'=>'innodb row\u format=dynamic'
    ,您已经提到过,您已经在使用它了。为了完整起见,我在这里重复


    较新的mysql版本(>=5.7.9)有一个
    innodb\u default\u row\u format=dynamic
    ,可以用来代替配置更改。

    这与mysql版本无关,这个问题与mysql的innodb实现中选择的字符集和限制有关。