【发布时间】:2019-04-23 22:28:34
【问题描述】:
我目前在 phpmyadmin 上使用 XAMPP/Apache 和 MariaDB。 我正在尝试使用 Doctrine 基于我的代码创建一个表,因此使用注释来验证表单。我只是想将表单中输入的值存储在数据库中。 在另一个示例中,这非常有效。
但是现在我有一个“复选框字段”,我猜它在创建数据库时会造成某种麻烦。
我在控制台中使用这些命令:
php bin/console make:migration
之后:
php bin/console doctrine:migrations:migrate
当调用第二个 = 当我尝试在我的数据库中创建表时,我收到以下错误:
Migration 20181121103017 failed during Execution.
Error An exception occurred while executing 'CREATE TABLE pizza (id INT
AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL
phone VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL,
size INT NOT NULL, ingredient JSON NOT NULL COMMENT '(DC2Type:json_array)', delivery INT NOT NULL,
PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB':
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in
your SQL syntax; check the manual that
corresponds to your MariaDB server version for the right syntax to use near
'JSON NOT NULL COMMENT '(DC2Type:json_
array)', delivery INT NOT NULL, PRIMARY KEY' at line 1
此时我真的不知道自己做错了什么。
这些是我在“Pizza.php”文件中的注释。
// ------------------
/**
* @Assert\NotBlank(
* message = "E-Mail Address required"
* )
* @Assert\Email(
* message = "The email '{{ value }}' is not a valid email."
* )
* @Assert\Length(min="2", max="255")
* @ORM\Column(type="string", length=255)
*/
protected $email;
// ------------------
/**
* @Assert\Range(min=0, max=3)
* @ORM\Column(type="integer")
*/
protected $size;
// ------------------
/**
*@Assert\NotBlank(
* message = "Choose at least 1 ingredient!"
* )
* @ORM\Column(type="array")
*/
protected $ingredient;
// ------------------
/**
* @Assert\NotBlank(
* message = "Choose a delivery option!"
* )
* @Assert\Range(min=0, max=1)
* @ORM\Column(type="integer")
*/
protected $delivery;
表单本身运行良好,验证按我的预期工作。
我到底做错了什么?
如果您需要我的“Pizza.php”(实体类)或我的控制器文件中的更多代码,请告诉我。
感谢您的帮助!
【问题讨论】:
-
这看起来像是您正在运行的 mysql / mariadb 版本与您正在运行的学说不匹配。话虽如此,我个人会规范化数据库。
-
您的 MariaDB 版本是否低于 10.2.7?见mariadb.com/kb/en/library/json-data-type
-
是的,我目前正在运行:服务器版本:10.1.19-MariaDB - mariadb.org 二进制分发
-
我可以简单地更新它我们会导致问题吗?现在有解决这个问题的方法吗?