在迁移中出错,“语法错误或访问冲突:1064”

时间:2016-03-15 16:31:56

标签: php mysql laravel laravel-5 laravel-5.2

我正在尝试在我的Laravel 5.2迁移中插入一个json字符串,我收到一个错误,“语法错误或访问冲突:1064”。

我目前使用MySQL版本5.6.17作为我的数据库。

这是我的迁移文件:

 Schema::create('profile', function (Blueprint $table) {
        $table->increments('id');
        $table->json('settings')->nullable();
        $table->timestamps();
    });

我可以通过我的MySQL数据库以某种方式实现这一点,还是需要使用MongoDB进行切换?

2 个答案:

答案 0 :(得分:4)

从Laravel 5.2开始,$table->json()方法将尝试在数据库中创建一个实际的JSON字段。但是,在MySQL 5.7.8之前,JSON字段没有添加到MySQL。

因此,如果您使用5.7.8之前的MySQL版本,则需要将其创建为text字段(这是Laravel< 5.2处理它的方式)。

答案 1 :(得分:2)

您需要使用MySQL 5.7.8或更高版本来使用json列。

https://laracasts.com/discuss/channels/eloquent/table-json-generates-an-error-when-running-migrations

您可以更新MySQL版本,也可以尝试使用text替代。如果它不能按原样工作,你可以在使用DB之前和之后解码和编码你的json数据。