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();
});
これを実行しているときに、次のエラーが発生します。
SQLSTATE [42000]:構文エラーまたはアクセス違反:1064SQL構文にエラーがあります。 1行目の「jsonnull、
content
json null、scripts
json null、deleted_at
timestamp null」の近くで使用する正しい構文については、MariaDBサーバーのバージョンに対応するマニュアルを確認してください。 (SQL:テーブルの作成pages
(id
int unsigned not null auto_increment primary key、title
varchar(191)not null、slug
varchar(191)not null、styles
json null、content
json null、scripts
json null、deleted_at
タイムスタンプnull、created_at
タイムスタンプnull、updated_at
タイムスタンプnull)デフォルトの文字セットutf8mb4 collate utf8mb4_unicode_ci)
Nullを保持していなくても、同じエラーがスローされます。 json形式のデータが欲しいので、サポートされているバージョンを確認しました。ドキュメントに従って、json形式のサポートはバージョンMariaDB 10.0.16.
から開始され、10.1.21-MariaDB
を使用しています。
これで私を助けてください。
MariaDBには、バージョン10.2.7以降のJSONデータ型のエイリアスがあります
MariaDBJSONをLaravel with this package
1064がデータ型「json」について文句を言ったことに注意してください。これは(まだ)MariaDBには実装されていません。
Dynamic Columns に近づくことができます。これには、少なくともJSON構文にそれらをフェッチする方法があります。
もう1つのこと(おそらくあなたが参照しているもの)は CONNECT
JSONテーブルタイプを持つことができることです。 (列タイプではありません。)
MySQL 5.7には、JSON
と呼ばれるデータ型と、それを操作するための一連の関数があります。
簡単な回避策を見つけました(本番環境には推奨されません)-
Mariadbバージョン10.1.32以下によると、mariadbはjsonデータ型をサポートしていないようです。バージョン10.2.7以降で使用できるかどうかはまだわかりません。
しかし、これを乗り越えるための簡単な回避策があります。
jsonデータ型をテキストに変更してから、移行を再実行してください。
( https://user-images.githubusercontent.com/27993070/41234555-19c5d1d8-6dbf-11e8-9a4b-0644b03aecfc.png )