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\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实现中选择的字符集和限制有关。