php – MySQL / MariaDB不接受JSON格式?无法创建数据库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – MySQL / MariaDB不接受JSON格式?无法创建数据库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2489字,纯文字阅读大概需要4分钟。
内容图文
![php – MySQL / MariaDB不接受JSON格式?无法创建数据库](/upload/InfoBanner/zyjiaocheng/889/d5fbb3e19a2f41709da5eaf9bd6105c8.jpg)
我目前在phpmyadmin上使用XAMPP / Apache和MariaDB.
我正在尝试使用Doctrine创建一个基于我的代码的表,因此使用Annotations来验证表单.我只想将表单中输入的值存储在数据库中.
在另一个例子中,这非常好.
但是现在我有一个“复选框字段”,我想在创建数据库时会造成某种麻烦.
我在控制台中使用这些命令:
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”(实体类)或我的控制器文件中的任何更多代码,请在此处告知我.
我很感激任何帮助!
解决方法:
根据您的评论,似乎Doctrine认为它可以使用您的mariadb版本中没有的功能.
如果您告诉doctrine您正在使用哪个版本,它将为该列选择正确的数据类型,在这种情况下可能是LONGTEXT或类似的东西.
根据您使用的内容,它看起来像(例如在symfony中使用yaml文件):
doctrine:
dbal:
server_version: '10.1'
请注意,您需要重新生成迁移.
就像我在评论中提到的那样,我个人会对数据库进行规范化,并使用不同的表格将比萨饼与成分相关联,以便更轻松地进行搜索和过滤.
内容总结
以上是互联网集市为您收集整理的php – MySQL / MariaDB不接受JSON格式?无法创建数据库全部内容,希望文章能够帮你解决php – MySQL / MariaDB不接受JSON格式?无法创建数据库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。