symfony - 无法运行简单迁移:指定的密钥太长错误
问题描述
我用 symfony 和教义建立了一个新项目。我使用以下命令创建了一个数据库:
php bin/console doctrine:database:create
然后我使用以下命令创建了一个实体:
php bin/console make:entity
这是生成的代码:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\Column(type="string", length=255)
*/
private $email;
/**
* @ORM\Column(type="string", length=24, nullable=true)
*/
private $phone;
/**
* @ORM\Column(type="integer")
*/
private $zip_code;
public function getId()
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
public function getPhone(): ?string
{
return $this->phone;
}
public function setPhone(?string $phone): self
{
$this->phone = $phone;
return $this;
}
public function getZipCode(): ?int
{
return $this->zip_code;
}
public function setZipCode(int $zip_code): self
{
$this->zip_code = $zip_code;
return $this;
}
}
当我尝试运行迁移时,我不断收到以下错误:
php bin/console make:migration
和
php bin/console doctrine:migrations:migrate
错误:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
这非常令人沮丧,因为我正在使用命令行生成代码和一个全新的项目,并且已经尝试解决这个问题很长一段时间了。
我很感激有关如何解决的任何建议。
解决方案
这发生在我身上是因为我使用utf8mb4
了排序规则(更具体地说utf8mb4_unicode_ci
是 ),这现在是学说的默认设置。
奇怪的是,我只对unique
字段有这个问题。我不得不将它们限制为 191 个字符,我在这里找到了答案:https ://laravel-news.com/laravel-5-4-key-too-long-error
推荐阅读
- mysql - 在mysql过程中调用后从临时表中选择
- r - 围绕分隔符反转数据框列名?
- python - Python 2 不再工作了,PYTHONPATH 问题?
- php - 无法获得标头 200 Success 工作?
- html - 如何使用@media 查询使背景图像变大?
- mongodb - 使用响应式 mongo 将案例类映射到 mongodb 文档
- java - 如何解释错误“java.lang.IllegalArgumentException: java.text.ParseException: End of header”
- java - 如何通过服务本身内的通知调用方法?
- javascript - 按顺序执行许多承诺(概念)
- jquery - Bootstrap折叠导航栏切换不起作用