问题描述
在运行 php artisan migrate 时,出现以下错误
While running php artisan migrate, I got the following error
[DoctrineDBALDBALException]
请求的数据库类型未知,DoctrineDBALPlatformsMySqlPlatform 可能不支持.
[DoctrineDBALDBALException]
Unknown database type enum requested, DoctrineDBALPlatformsMySqlPlatform may not support it.
如何解决这个问题.
代码:
public function up() { Schema::table('blogs', function (Blueprint $table) { $table->string('wordpress_id')->nullable(); $table->string('google_blog_id')->nullable()->change(); }); }
推荐答案
官方 Laravel 5.1 文档指出:
The official Laravel 5.1 documentation states:
注意:当前不支持使用枚举列重命名表中的列.
Note: Renaming columns in a table with a enum column is not currently supported.
如果您尝试更改另一列并不重要,如果表包含 enum 任何地方,它都将不起作用.这是 Doctrine DBAL 问题.
It doesn't matter if you're trying to change another column, if the table contains a enum anywhere it won't work. It's a Doctrine DBAL issue.
作为一种解决方法,您可以删除该列并添加一个新列(列数据将丢失):
As a workaround you could either drop the column and add a new one (column data will be lost):
public function up() { Schema::table('users', function(Blueprint $table) { $table->dropColumn('name'); }); Schema::table('users', function(Blueprint $table) { $table->text('username'); }); }
或使用 DB 语句:
public function up() { DB::statement('ALTER TABLE projects CHANGE slug url VARCHAR(200)'); } public function down() { DB::statement('ALTER TABLE projects CHANGE url slug VARCHAR(200)'); }
来源:https://github.com/laravel/framework/issues/1186