Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel迁移返回无效的SQL_Php_Mysql_Laravel_Mariadb - Fatal编程技术网

Php Laravel迁移返回无效的SQL

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

我正在运行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')->默认值(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字符串,但有任何文档信息说明原因吗?添加这一点可以让这个问题从一个好的答案变成一个好的答案