我遇到了Laravel MySQL迁移问题。
迁移:
public function up()
{
Schema::create('capsule_packages', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->tinyInteger('type')->unsigned();
$table->json('data')->nullable();
$table->decimal('price', 19, 4);
$table->text('description')->nullable();
$table->timestamps();
});
}
错误:
SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有一个错误;请参见语法。检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在'json null,
price
十进制(19,4)不为null,description
文本null,created_at' at line 1 (SQL: create table
capsule_packages { {1}} id(
名称int unsigned not null auto_increment primary key,
类型varchar(255) not null,
数据tinyint unsigned not null,
价格json null,
描述decimal(19, 4) not null,
created_attext null,
updated_at`时间戳为空)默认字符集utf8整理为'utf8_unicode_ci')
答案 0 :(得分:1)
这可能是由于您的Completable
版本。进行了一些挖掘,从Laravel 5.2开始,<td data-order=<fmt:formatDate pattern = "yyyy-MM-dd" value = "${myObject.myDate}" />>${myObject.myDate}</td>
方法将尝试在数据库中创建实际的MySQL
字段。但是,在您的示例中,$table->json()
在当前的MySQL版本中不可用。您只能在MySQL版本json
及更高版本中使用此字段。如果您使用的版本低于此版本,则可以通过创建json
字段而不是5.7.8.
来解决此错误。
您可以在错误代码中看到它:
您的SQL语法有错误;检查手册 对应于您的MariaDB服务器版本,以在 json
附近使用正确的语法
来源:dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-8.html#mysqld-5-7-8-json
编辑:
根据text
版json
及更低版本,不支持MariaDB
数据类型