【发布时间】:2016-05-18 20:30:05
【问题描述】:
我在 Laravel 项目中有一个迁移,它在数据库中创建了一个存储过程。我第一次创建此迁移时看起来不错。
但如果我想更改现有的存储过程,我必须创建一个新迁移,其中包含新版本的过程代码。
它有效,但它不允许在git 中制作和查看清晰的diff。
这是一个迁移示例:
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
class GenerateReport extends Migration
{
public function up()
{
DB::statement(<<<SQL
CREATE OR REPLACE FUNCTION myfunc() RETURNS void AS
\$func\$
BEGIN
COPY (SELECT 1) TO '/tmp/myfile.tmp' BINARY;
END
\$func\$ LANGUAGE plpgsql;
SQL
);
}
public function down()
{
DB::statement("DROP FUNCTION myfunc()");
}
}
我的问题 - 有没有办法处理迁移并能够清楚地看到 git 中每一行迁移的每一个变化?
- 我不想手动运行
diff工具来查看多个文件的更改。 - 我可能只是使用旧迁移编辑现有文件并手动删除
migration表中的行。但这是一个 hack,我可能会忘记在生产中这样做。
【问题讨论】: