迁移表时出错。错误显示
sqlstate[42000]:语法错误或访问冲突:1064您的sql语法有错误;请查看与您的mariadb服务器版本对应的手册,以了解使用“json null”附近的正确语法, start_date
日期不为空, end_date
日期不为空, status
第1行的枚举(“”)(sql:创建表 modules
( id
int unsigned not null自动递增主键, title
varchar(191)不为空, description
文本不为空, image
blob为空, resources
json为空, start_date
日期不为空, end_date
日期不为空, status
enum('pending'、'start'、'completed')不为null默认为'pending', user_id
int不为空, created_at
时间戳为空, updated_at
时间戳null)默认字符集utf8mb4 collate'utf8mb4\u unicode\u ci')
我的表有以下值:
public function up()
{
Schema::create('modules', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('description');
$table->binary('image')->nullable();
$table->json('resources')->nullable();
$table->date('start_date');
$table->date('end_date');
$table->ENUM('status',['pending','start','completed'])->default('pending');
$table->integer('user_id');
$table->timestamps();
});
}
这是我的型号代码:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class modules extends Model
{
protected $fillable = [
'title', 'description','image','resources', 'start_date','end_date','status','user_id',
];
}
有人能解决这个问题吗??
3条答案
按热度按时间nx7onnlm1#
maria db的早期版本不支持json字段类型,请参见链接,https://mariadb.com/resources/blog/json-with-mariadb-10-2/
请验证您的版本。
j13ufse22#
到了拉雷维尔
$table->json()
方法将尝试在数据库中创建实际的json字段。但是,直到mysql才将json字段添加到mysql中5.7.8
.因此,如果您使用的mysql版本早于
5.7.8
,只需将其创建为文本字段mariadb新版本支持json(阿尔法版本。maria不向生产服务器推荐。仅用于测试。)
mariadb 10.1不支持json
bnl4lu3b3#
可能正在添加
$casts
类属性将解决您的问题。这是一些可能对你有帮助的东西。