5
votes

I am trying to create a new migration for my users table, I have the following schema:

        Schema::create('users', function($t) {
            $t->increments('id');
            $t->string('username', 16);
            $t->string('password', 64);
            $t->integer('role', 64);
            $t->timestamps();
    });

When I try to run php artisan migrate from the terminal, I get the following error:

[Exception]
SQLSTATE[42000]: Syntax error or access violation: 1075 Incorrect table definition; there can be only one auto column and it must be defined as a key (SQL: create table users (id int unsigne d not null auto_increment primary key, username varchar(16) not null, password varchar(64) no t null, role int not null auto_increment primary key, created_at timestamp default 0 not null , updated_at timestamp default 0 not null)) (Bindings: array (
))

The error has something to do with the 'role' field, as when this is removed it seems to run fine.

Thanks in advance for any help or insight.

3
Why does the generated SQL set role to auto_increment primary key? What's wrong with id being the only auto_increment primary key column?ta.speot.is

3 Answers

13
votes

The second parameter for integer is an auto increment flag.

public function integer($column, $autoIncrement = false, $unsigned = false)

https://github.com/laravel/framework/blob/5.4/src/Illuminate/Database/Schema/Blueprint.php#L510

0
votes
$t->integer('role', false);

That fixes it.

0
votes

Length attribute of integer is not permitted.Remove it and try.