2015-04-27 67 views
9

我试着在我的本地重命名数据库列,这样我可以使用laravel 5和安装学说DBAL以后做它在研发和生产重命名列名字给人错误

林。

代码我的迁移:

$table->renameColumn('puesto', 'aux'); 

我跑php artisan migrate后,它告诉我,

[Doctrine\DBAL\DBALException]                   
Unknown database type json requested, Doctrine\DBAL\Platforms\PostgreSqlPlatform may not support it. 

列IM试图重命名心不是连JSON,虽然在表JSON列,实际上只有一个叫做'alianzas'。 我的问题是,我如何从迁移中重命名列,而不是在数据库中手动重命名。

+0

为什么当Laravel拥有它自己的[ /docs/5.0/migrations)? –

+0

laravel文档要求您安装原则,如果您要重命名列http://laravel.com/docs/5.0/schema#renaming-columns – Amonra

+0

即时通讯使用laravel 5,当我通过composer.json查看是否依赖被包括它没有出现,所以我加了它。无论哪种方式,我尝试了相同的代码,然后安装教义和错误是不同的,它是'[Symfony \ Component \ Debug \ Exception \ FatalErrorException] Class'Doctrine \ DBAL \ Driver \ PDOPgSql \ Driver'not found' so I think it所有 – Amonra

回答

1

即使安装了doctrine/dbal,Laravel 5.1中仍会出现此错误。

作为临时解决办法,你可以写你的原始SQL迁移,像这样:

public function up(){ 
    DB::statement("ALTER TABLE table_name RENAME puesto TO aux"); 
} 
+0

这会在新版本的MySQL中引发错误。将'a'到'b'的整数列重新命名的正确语法是: 'ALTER TABLE t1 CHANGE a b INTEGER;' –

11

它看起来像只laravel提示安装。

你可以安装它:

composer require doctrine/dbal 
8

修改列

先决条件

之前修改列,请务必将学说/ DBAL依赖添加到您的composer.json文件。 Doctrine DBAL库用于确定列的当前状态,并创建对列进行指定调整所需的SQL查询。

"require": { 
    "doctrine/dbal": "^2.5" 
}, 

composer require doctrine/dbal 

更新列属性

的变化方法,可以修改现有的柱到一个新的类型,或修改列的属性。例如,您可能希望增加字符串列的大小。要查看实际操作中的更改方法,让我们将名称列的大小从25增加到50:

Schema::table('users', function ($table) { 
    $table->string('name', 50)->change(); 
});