我建立了一个包含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
这非常令人沮丧,因为我使用命令行生成代码和一个全新的项目,并且已经尝试解决了一段时间。
我感谢有关解决方法的任何建议。
答案 0 :(得分:0)
这发生在我身上,是因为我使用utf8mb4
作为排序规则(更具体地说是utf8mb4_unicode_ci
),现在该规则是默认设置。
奇怪的是,我仅在unique
字段中遇到此问题。我必须将其限制为191个字符,这是我在这里找到的答案:https://laravel-news.com/laravel-5-4-key-too-long-error