表定义不正确;只能有一个自动列,必须将其定义为键

时间:2015-02-05 22:03:18

标签: laravel laravel-4 migration

我在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();

        });

    }

3 个答案:

答案 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}}有效。