当我使用laravel迁移在数据库中创建表时,我遇到了这个问题。我不知道它可能有什么问题,因为我在以前的系统上使用相同的命令。这是我在使用作曲家创建表时得到的错误。
$php artisan迁移迁移表已成功创建。
[Illumb\Database\QueryException]SQLSTATE[42000]:语法错误或访问冲突:1071指定的密钥太长;最大密钥长度为767字节(SQL:alter tableusers
adduniqueusers\u email\u unique
(email
)
[PDOException]SQLSTATE[42000]:语法错误或访问冲突:1071指定的密钥太长;最大密钥长度为767字节
若要修复此问题,请将其置于Schema::create方法调用之上:
Schema::defaultStringLength(191);
在这里阅读更多:
https://github.com/laravel/framework/issues/17508
字符限制取决于您使用的字符集Laravel
使用的是utf8mb4
,最大索引的字符限制为191
。
您只需将角色限制设置为正确的。从Laravel Index Length中读取此内容
索引长度
默认情况下,Laravel使用utf8mb4
字符集,其中包括对在数据库中存储“emojis”的支持。如果您运行的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);
}
或者,您可以为数据库启用innodb\u large\u prefix
选项。有关如何正确启用此选项的说明,请参阅数据库文档。
Laravel 5.4默认使用utf8mb4
。修复此错误的一种方法是默认返回utf8
。
转到config\database.php
并将数据库charset
更改为uft8
,将排序规则更改为
utf8\u unicode\u ci
:
'mysql' => [
//..
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
//..
],
我是Android应用程序开发的新手,目前正在开发一个现有的Android应用程序。从Android文档链接https://developer.Android.com/distribute/best-practices/develope/target-sdk中可以看出,应用程序更新必须至少针对Android9.0。 因此,我将targetSDKVersion设置为28,并尝试运行应用程序,但res
我使用openAm 9.5.4作为服务提供商,salesforce作为IDP。使用现有java 1.6版本的OpenAm,我的IDP启动了sso工作。但是,当我们将openAm的java版本迁移到1.7时,sso失败,错误为“HTTP状态500-单点登录失败”。java版本更改可能会导致什么问题? 我想确认的一个更重要的问题是,OpenAm 9.5.4是否在Java1.7上支持SSO?有人尝试过这
我在stackoverflow中搜索了一个类似的问题,但没有找到,不同情况下的其他可能解决方案也不适合我。我打开这个问题是因为我找不到这个问题的解决方案,也找不到这个问题的类似问题。 我尝试过使用Android Room的自动迁移功能,但它从未正常工作。 目前的情况如下: 我有一个数据库版本1 我想向一个表添加一个新列,这是我想做的唯一修改。此列将保存字符串值,而不保存其他任何内容。 此新列将仅存
如果运行,它会失败 未找到基表或视图:1146表*.迁移不存在。 数据库是空的。 如果我运行我会看到迁移表,但它是空的。 DB显示迁移表,但它是空的。 如果我再次运行,数据库再次为空,我会得到相同的错误: 未找到基表或视图:1146表*.迁移不存在。 也许有人知道这里发生了什么。
我们有一个数据库,其中有一个名为Students的表,其中包含id、name、age和school列。 现在我想编写一个迁移脚本,将3列(假设我有数百万条记录)从Students表复制到New_Students表。 下面是我编写的示例脚本。这是一个错误 当在crateDb管理UI中执行上面的命令时,我得到下面的错误 以上语句在单独执行时有效。 问题: 为什么上面的多个语句不起作用,但是当单独键入时
最近,我尝试将firebase云函数从javascript迁移到typescript,并将函数拆分为多个文件。然而,我在尝试服务和部署时不断出错: 服务时的错误: 函数[FunctionName]:函数被忽略,因为fiRecovery模拟器不存在或未运行。函数[FunctionName]:函数被忽略,因为Firebase模拟器不存在或未运行。 部署时出错: 已尝试: Firestore/Fireb