11
votes

I am trying to alter the column datatype using Laravel migration. But I am facing following error. Please help me out.

Schema::table('files', function(Blueprint $table) {
    $table->integer('app_id')->change();
    $table->index(['app_id', 'filename']);
});

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHARACTER SET utf8 DEFAULT 0 NOT NULL COLLATE utf8_unicode_ci' at line 1 (SQL: ALTER TABLE files CHANGE app_id app_id INT CHARACTER SET utf8 DEFAULT 0 NOT NULL COLLATE utf8_unicode_ci)

2
Not working for the following $table->integer('app_id')->change(); When I convert string to integer CHARACTER SET utf8 added automatically. How to remove this? - Nagarajan Malaichamy
Do you have doctrine/dbal package in your laravel project? - nice_dev
Yes I have doctrine/dbal. - Nagarajan Malaichamy
I didn't change anything. It is a fresh installation - Nagarajan Malaichamy

2 Answers

9
votes

Your issue is most likely caused by a bug in the most recent version of the doctrine/dbal package. The issue was introduced with v2.10.0.

You can always downgrade the package in your composer.json to v2.9.3 it should work just fine.

See the offical issue here: https://github.com/doctrine/dbal/issues/3714

10
votes

As a alternative solution to https://github.com/doctrine/dbal/issues/3714 that is downgrading the doctrine/dbal package u can do:

Schema::table('member_section', function (Blueprint $table) {
    $table->bigInteger('type')->charset(null)->collation(null)->change();
});