Laravel中的mariaDB JSON支持

Nit*_*mar 6 php json mariadb laravel laravel-5.4

我正在尝试在XAMP中创建一个json数据库,同时使用phpmyAdmin它向我显示我正在使用mariaDB,但在我的xamp-control panel v3.2.2显示运行中mySQL on port 3306.我正在使用Laravel 5.4框架来创建数据库,以下是我正在尝试执行的迁移:

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();
});
Run Code Online (Sandbox Code Playgroud)

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

SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误; 检查与您的MariaDB服务器版本对应的手册,以便在第1行使用'json null,contentjson null,scriptsjson null,deleted_attimestamp null' 附近的正确语法(SQL:create table pages(idint unsigned not null auto_increment primary key,titlevarchar(191) )not null,slugvarchar(191)not null,stylesjson null,contentjson null,scriptsjson null,deleted_attimestamp null,created_attimestamp null,updated_attimestamp null)默认字符集utf8mb4 collat​​e utf8mb4_unicode_ci)

即使我保持不为null,它也会抛出相同的错误.我想要json格式的数据,我检查了支持的版本,并根据文档json格式支持从版本开始MariaDB 10.0.16.,我正在使用10.1.21-MariaDB

帮助我解决这个问题.

小智 7

从版本10.2.7开始,MariaDB具有JSON数据类型的别名

使用此包将MariaDB JSON添加到Laravel


Ric*_*mes 4

请注意,1064 抱怨数据类型“json”。MariaDB 中尚未实现这一点。

您可以接近Dynamic Columns,它至少有一种将它们提取到 JSON 语法中的方法。

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

MySQL 5.7 有一个名为 的数据类型JSON,以及一堆操作此类数据的函数。