Php Laravel迁移返回无效的SQL
我正在运行Laravel 6.0.2,我的向上迁移方法如下:Php Laravel迁移返回无效的SQL,php,mysql,laravel,mariadb,Php,Mysql,Laravel,Mariadb,我正在运行Laravel 6.0.2,我的向上迁移方法如下: Schema::create('users',函数(Blueprint$表){ $table->increments('id'); $table->string('first_name'); $table->string('last_name'); $table->string('email')->unique(); $table->string('password'); $table->boolean('admin')->默认值(f
Schema::create('users',函数(Blueprint$表){
$table->increments('id');
$table->string('first_name');
$table->string('last_name');
$table->string('email')->unique();
$table->string('password');
$table->boolean('admin')->默认值(false);
$table->boolean('manager')->默认值(false);
$table->rememberToken();
$table->timestamps();
});
创建表“用户”(
`id`int无符号非空自动增量主键,
`first_name`varchar(255)不为空,
`姓氏'varchar(255)不为空,
`电子邮件'varchar(255)不为空,
`密码'varchar(255)不为空,
`admin`tinyint(1)不为空默认值('0'),
`管理器'tinyint(1)不为空默认值('0'),
`记住_token`varchar(100)null,
`在“时间戳为空”处创建了_,
`更新了'timestamp null'处的_
)默认字符集utf8mb4比较“utf8mb4\u unicode\u ci”
我已经在一个在线语法检查器上运行了该SQL,并且在admin tinyint(1)not null default('0'),
行中给出了错误和错误
我不确定这是否是一个Laravel6.0.2的错误,因为它似乎是工作之前的更新
有人遇到过这个问题并知道解决方法吗?嗯,这很容易解决,也很容易忽视。我猜你已经看太久了 您的
默认值不需要括号或引号。引号仅用于字符串,而不是int
s,只有当它是一个子查询时才需要括号(这不太可能真正起作用,但我没有尝试过)
在mysql中,布尔类型为tinyint 0 false 1 true
$table->boolean('admin')->default(0);
尝试在默认值上传递0而不是False。SQL语法对于MariaDB 10.3似乎有效。哪个“联机语法检查器”正在报告错误?“在线语法检查器”是否执行与MariaDB相同的规则?MariaDB是否报告语法错误?(似乎需要修复的是“联机语法检查器”,而不是Laravel或MariaDB)@aynber no Luckprece请尝试在连接属性(config/database.php)中设置'strict'=>'false'
:我不熟悉travis ci。生成的SQL语法对MariaDB 10.3.x有效。它在MariaDB 10.2.xu中也可能有效。不幸的是,如果OP手动创建架构,此建议会起作用,但正在使用Laravel迁移。请记住,问题中看到的SQL是从schema::create()
函数生成的;这并不像每个人说的“省略引号”那么简单。SQL语法似乎至少对MariaDB 10.3有效,因此SQL不一定需要修复。(另外,不要链接到W3傻瓜)你有任何文档说明为什么它应该是0
而不是false
?我知道它显然错误地将false
转换为一个0字符串,但有任何文档信息说明原因吗?添加这一点可以让这个问题从一个好的答案变成一个好的答案