当前位置: 首页 > 知识库问答 >
问题:

Laravel中的mariaDB JSON支持

萧伟兆
2023-03-14

我试图在XAMP中创建一个json数据库,在使用phpmyAdmin时,它显示我正在使用mariaDB,但在我的XAMP控制面板v3中。2.2它显示在端口3306上运行mySQL。我正在使用Laravel 5.4 framework创建数据库,下面是我尝试执行的迁移:

Schema::connection('newPortal')->create('pages', function (Blueprint $table){
    $table->increments('id');
    $table->string('title');
    $table->string('slug')->unique()->index();
    $table->json('styles')->nullable();
    $table->json('content')->nullable();
    $table->json('scripts')->nullable();
    $table->softDeletes();
    $table->timestamps();
});

现在,在执行此操作时,我遇到以下错误:

SQLSTATE[42000]:语法错误或访问冲突: 1064你有一个错误在您的SQL语法;检查手册,对应于您的MariaDB服务器版本的正确语法使用附近'json null,内容json null,脚本json null,deleted_at时间戳null'在第1行(SQL:创建表页面idint无符号非空auto_increment主键,titlevarchar(191)非空,json null,内容json null,脚本json null,deleted_at时间戳null,created_at时间戳null,updated_at时间戳null)默认字符集utf8mb4排序utf8mb4_unicode_ci)

即使我保持不为null,它也会抛出相同的错误。我想要json格式的数据,我检查了支持的版本,并根据文档,从版本MariaDB 10.0开始支持json格式。16.我使用的是10.1。21马里亚行

帮我解决这个问题。

共有3个答案

钱和平
2023-03-14

找到一个简单的解决方法(不推荐用于生产)-

根据mariadb版本10.1。32及更低版本似乎mariadb不支持json数据类型我仍然不确定它是否在10.2版中可用。7.

但是这里有一个简单的变通方法来解决这个问题。

将json数据类型更改为文本,然后再次运行迁移。

(https://user-images.githubusercontent.com/27993070/41234555-19c5d1d8-6dbf-11e8-9a4b-0644b03aecfc.png)

来源-https://github.com/laravel/framework/issues/13622

满勇军
2023-03-14

请注意,1064抱怨数据类型为“json”。马里亚行尚未(尚未)实施这一政策。

您可以接近动态列,这至少有一种方法可以将它们提取到JSON语法中。

另一件事(可能是您指的)是CONNECT能够具有JSON表类型。(不是列类型。)

MySQL 5.7有一个名为JSON的数据类型,外加一堆函数来操作这样的数据类型。

隆兴修
2023-03-14

从10.2版开始。7.JSON数据类型是LONGTEXT的别名。

如果您对MariaDB中的JSON数据类型有问题,只需将其更改为LONGTEXT。;-)

或者使用此包将MariaDB JSON添加到Laravel

 类似资料:
  • 问题内容: 对于 Maria-DB* 和 MySQL 支持的 动态 列,我们具有JSON列类型。对于我们的项目之一,我们应该为 Maria- DB (不是 Mysql )实现一个数据库。 *** 使用包支持“ 动态列”。 如何可以覆盖orm中进行添加。在将此功能添加到此类中的包中,可以覆盖该类 框架中支持ORM的实现类: DynamicActiveRecord.php DynamicActiveQ

  • 我正在开发一个web应用程序,我遵守REST API标准。我正在搜索REST API的最佳实践订阅和付款。 当新用户订阅“PRO计划”时,用户需要支付计划费用,这是一个交易。 对于升级、取消或更新计划,是否应设置put:和或其他endpoint?

  • 我是Laravel的新手,正在查看一些示例代码。 在控制器中,我看到了这个: 为什么我必须使用“use Illumbite\Support\Facades\Input;”? 我不能只使用eg Input::get();就像我在路线文件中做的那样?

  • 在我的网站中,我有用户、角色和权限。 每个用户属于多个角色(例如User.php)和称为“role_user”的数据透视表 每个角色都属于许多权限(例如Role.php)和名为“permission\u Role”的透视表 我想以某种方式访问用户权限,但我似乎无法弄清楚。基本上,我需要这样的东西在User.php 这可能吗?请帮忙。谢谢你。

  • 我有一个表,其中包含列和一个外键约束。因此,用户id与表相关。 我进行了迁移,删除了列和外键约束。方法工作正常。但是,当谈到时,它会崩溃,因为我添加了一个user\u id列,然后恢复约束,但是该列中的值与实际数据无关,所以我得到了150个MySQL错误。 我找到了一个不适合我的解决方案。解决办法是暂时禁用外键约束。这是我的迁移文件: 使用Illumb\Database\Schema\Bluepr

  • 所以我试图连接到一个私人频道使用Laravel回声。我能够连接到一个公共通道,但我得到的问题验证(用正确的承载令牌登录)私人通道-得到以下错误从laravel-echo-server start 我被不支持POST方法的错误弄糊涂了,因为所有的POST、PUT、PATCH和DELETE都在我的Laravel项目中工作。此外,我能够击中使用Postman与POST请求。 下面是一个php artis