我在Laravel中迁移时遇到错误
[PDOException] SQLSTATE [42000]:语法错误或访问冲突:1075表定义不正确;只能有一个自动列,必须定义 作为关键
代码
public function up()
{
Schema::create('inventories', function($table){
$table->engine = 'InnoDB';
$table->increments('id')->unsigned();
$table->string('sku',255);
$table->string('description', 255 )->nullable;
$table->tinyInteger('stock',5)->nullable()->unsigned();
$table->tinyInteger('day_of_week',1)->unsigned();
$table->text('note')->nullable();
$table->timestamps();
});
}
答案 0 :(得分:15)
/**
* Create a new tiny integer column on the table.
*
* @param string $column
* @param bool $autoIncrement
* @param bool $unsigned
* @return \Illuminate\Support\Fluent
*/
public function tinyInteger($column, $autoIncrement = false, $unsigned = false)
{
return $this->addColumn('tinyInteger', $column, compact('autoIncrement', 'unsigned'));
}
这是tinyInteger()
的{{1}}函数。正如您所看到的,它需要一个布尔参数。您似乎正在尝试为大小添加参数。你不能在Laravel中指定tinyint的大小。
Blueprint.php
这很好用。
答案 1 :(得分:2)
尝试一下
$table->integer('user_id')->length(10)->unsigned();
答案 2 :(得分:0)
只是要添加,$table->integer('user_id', 10)
也会抛出该错误,因此我根据Sturm的答案移除了'size'参数,并在查看了Blueprint
类之后{ {1}}有效。