Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

christopher's avatar

Migrate error

Hey -

i just changed one of my migrations files and i did php artisan migrate:refresh

Now if i do php artisan migrate i get the following error and all my tables are gone:

vagrant@homestead:~/code/dmc$ php artisan migrate
exception 'PDOException' with message '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' in /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Connection.php:358
Stack trace:
#0 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Connection.php(358): PDOStatement->execute(Array)
#1 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Connection.php(606): Illuminate\Database\Connection->Illuminate\Database\{closure}(Object(Illuminate\Database\MySqlConnection), 'create table `u...', Array)
#2 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Connection.php(570): Illuminate\Database\Connection->runQueryCallback('create table `u...', Array, Object(Closure))
#3 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Connection.php(359): Illuminate\Database\Connection->run('create table `u...', Array, Object(Closure))
#4 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php(63): Illuminate\Database\Connection->statement('create table `u...')
#5 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(169): Illuminate\Database\Schema\Blueprint->build(Object(Illuminate\Database\MySqlConnection), Object(Illuminate\Database\Schema\Grammars\MySqlGrammar))
#6 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(112): Illuminate\Database\Schema\Builder->build(Object(Illuminate\Database\Schema\Blueprint))
#7 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(213): Illuminate\Database\Schema\Builder->create('users', Object(Closure))
#8 /home/vagrant/code/dmc/database/migrations/2014_10_12_000000_create_users_table.php(24): Illuminate\Support\Facades\Facade::__callStatic('create', Array)
#9 /home/vagrant/code/dmc/database/migrations/2014_10_12_000000_create_users_table.php(24): Illuminate\Support\Facades\Schema::create('users', Object(Closure))
#10 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(135): CreateUsersTable->up()
#11 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(111): Illuminate\Database\Migrations\Migrator->runUp('2014_10_12_0000...', 1, false)
#12 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(82): Illuminate\Database\Migrations\Migrator->runMigrationList(Array, false)
#13 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(63): Illuminate\Database\Migrations\Migrator->run('/home/vagrant/c...', false)
#14 [internal function]: Illuminate\Database\Console\Migrations\MigrateCommand->fire()
#15 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Container/Container.php(523): call_user_func_array(Array, Array)
#16 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Console/Command.php(114): Illuminate\Container\Container->call(Array)
#17 /home/vagrant/code/dmc/vendor/symfony/console/Symfony/Component/Console/Command/Command.php(253): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Console/Command.php(100): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /home/vagrant/code/dmc/vendor/symfony/console/Symfony/Component/Console/Application.php(874): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /home/vagrant/code/dmc/vendor/symfony/console/Symfony/Component/Console/Application.php(195): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Database\Console\Migrations\MigrateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 /home/vagrant/code/dmc/vendor/symfony/console/Symfony/Component/Console/Application.php(126): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(91): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 /home/vagrant/code/dmc/artisan(34): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#24 {main}

Next exception 'Illuminate\Database\QueryException' with message '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 unsigned not null auto_increment primary key, `name` varchar(255) not null, `email` varchar(255) not null, `password` varchar(60) not null, `company` int not null auto_increment primary key, `remember_token` varchar(100) null, `created_at` timestamp default 0 not null, `updated_at` timestamp default 0 not null) default character set utf8 collate utf8_unicode_ci)' in /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Connection.php:614
Stack trace:
#0 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Connection.php(570): Illuminate\Database\Connection->runQueryCallback('create table `u...', Array, Object(Closure))
#1 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Connection.php(359): Illuminate\Database\Connection->run('create table `u...', Array, Object(Closure))
#2 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php(63): Illuminate\Database\Connection->statement('create table `u...')
#3 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(169): Illuminate\Database\Schema\Blueprint->build(Object(Illuminate\Database\MySqlConnection), Object(Illuminate\Database\Schema\Grammars\MySqlGrammar))
#4 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(112): Illuminate\Database\Schema\Builder->build(Object(Illuminate\Database\Schema\Blueprint))
#5 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(213): Illuminate\Database\Schema\Builder->create('users', Object(Closure))
#6 /home/vagrant/code/dmc/database/migrations/2014_10_12_000000_create_users_table.php(24): Illuminate\Support\Facades\Facade::__callStatic('create', Array)
#7 /home/vagrant/code/dmc/database/migrations/2014_10_12_000000_create_users_table.php(24): Illuminate\Support\Facades\Schema::create('users', Object(Closure))
#8 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(135): CreateUsersTable->up()
#9 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(111): Illuminate\Database\Migrations\Migrator->runUp('2014_10_12_0000...', 1, false)
#10 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(82): Illuminate\Database\Migrations\Migrator->runMigrationList(Array, false)
#11 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(63): Illuminate\Database\Migrations\Migrator->run('/home/vagrant/c...', false)
#12 [internal function]: Illuminate\Database\Console\Migrations\MigrateCommand->fire()
#13 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Container/Container.php(523): call_user_func_array(Array, Array)
#14 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Console/Command.php(114): Illuminate\Container\Container->call(Array)
#15 /home/vagrant/code/dmc/vendor/symfony/console/Symfony/Component/Console/Command/Command.php(253): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Console/Command.php(100): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 /home/vagrant/code/dmc/vendor/symfony/console/Symfony/Component/Console/Application.php(874): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /home/vagrant/code/dmc/vendor/symfony/console/Symfony/Component/Console/Application.php(195): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Database\Console\Migrations\MigrateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /home/vagrant/code/dmc/vendor/symfony/console/Symfony/Component/Console/Application.php(126): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /home/vagrant/code/dmc/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(91): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 /home/vagrant/code/dmc/artisan(34): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 {main}
0 likes
5 replies
jakeryansmith's avatar

Looks like you have two auto_incrementing id's "id" and "company". You can only have one.

christopher's avatar

mh .. these are my migrations, so far it was working. And my database table is empty, only the migration table exist without any records.

User:

Schema::create('users', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password', 60);
                        $table->integer('company', 4);
            $table->rememberToken();
            $table->timestamps();
        });

countries:

Schema::create('countries', function(Blueprint $table)
        {
            $table->increments('id');
            $table->char('country_code', 2)->unique();
            $table->char('country_name', 100);
        });

companys:

Schema::create('companies', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('logo');
            $table->string('name');
            $table->string('website');
            $table->string('affiliations');
            $table->integer('user_id');
            $table->string('email');
            $table->string('skype');
            $table->string('phone');
            $table->string('mobile');
            $table->string('adress');
            $table->string('street');
            $table->string('city');
            $table->integer('country', 2);
            $table->char('zip_code', 10);
            $table->string('slug')->unique();
            $table->timestamps();
        });
jakeryansmith's avatar
Level 8

I'm pretty sure you can't provide a second argument when using integers. So change $table->integer('company', 4); to $table->integer('company');.

1 like
nyedidikeke's avatar

@christopher your post is about a year old though, but still adding my voice: to assign a number, use ->length(n), where n is the length or value to be assigned to the affected integer column; here, company. As such, $table->integer('company')->length(4)->unsigned(); should help you completely meet your needs effectively.

1 like

Please or to participate in this conversation.