我已经在我的Symfony项目上创建了实体,但是当我执行迁移时,我收到了此错误:
SQLSTATE[42000]:语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节
我创建了这两个实体"发布"和"标签",具有ManyToMany关联:
应用\实体\发布
/**
* @ORMManyToMany(targetEntity="AppEntityTag", inversedBy="posts")
* @ORMJoinTable(name="post_tag",
* joinColumns={@ORMJoinColumn(name="post_id", referencedColumnName="id")},
* inverseJoinColumns={@ORMJoinColumn(name="tag_code", referencedColumnName="code")}
* )
*/
private $tags;
应用\实体\标记:
/**
* @ORMManyToMany(targetEntity="AppEntityPost", mappedBy="tags")
*/
private $posts;
迁移应创建数据透视表"post_tag",post_id和tag_code作为主键。如何修复该错误?
让你尝试将以下代码添加到AppServiceProvider.php的boot((方法中:
Schema::defaultStringLength(191);
添加到AppServiceProviders.php
:
use IlluminateSupportFacadesSchema;
public function boot()
{
Schema::defaultStringLength(191);
}
我解决了从"post_tag"表中更改密钥长度的问题