我在使用laravel迁移命令时有问题。它显示:
SQLSTATE42000:语法错误或访问冲突: 1071指定的键太长;最大键长度为1000个字节(SQL: alter
usersadd uniqueusers_email_unique(
但是我的mysql版本是5.7.14,我的字符集是:
mysql> show variables like "%char%";
+--------------------------+-------------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | D:\wamp64\bin\mysql\mysql5.7.14\share\charsets\ |
+--------------------------+-------------------------------------------------+所以不应该像医生说的那样有任何问题。有人能帮我吗?
发布于 2017-03-03 04:07:28
错误消息中提到的1000 bytes指向您的存储引擎是MyISAM而不是InnoDB。5.7.7中与密钥长度相关的MySql更改是特定于InnoDB引擎的。
您需要将表移动到InnoDB存储引擎,或者如果必须使用MyISAM,则需要使用提到的在文件中的Schema::defaultStringLength(191);语句。
// AppServiceProvider
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}发布于 2017-09-23 11:08:10
最新版本的MySQL 5.7.7或更高版本不会出现任何错误,但在任何laravel版本中,对于低于版本的版本,您需要在放置在app/Providers/AppServiceProvider.php的文件中添加一行
您需要更新如下内容:
public function boot()
{
Schema::defaultStringLength(191);
}请别忘了加一行
use Illuminate\Support\Facades\Schema;在文件的顶部。
与以下博客的参考:https://laravel-news.com/laravel-5-4-key-too-long-error
发布于 2019-07-27 11:57:34
设置Schema::defaultStringLength(191)并不总是有效的,也就是说,如果你使用望远镜。造成此错误的主要原因是mysql引擎。默认情况下,Laravel是为InnoDB配置的,您的数据库可能在默认情况下被配置为使用MyISAM。要正确地修复它,最好是编辑config\database.php并在mysql中修改配置
'engine' => null至
'engine' => 'InnoDB'https://stackoverflow.com/questions/42570065
复制相似问题