Symfony2条令迁移失败

Symfony2条令迁移失败,symfony,doctrine,Symfony,Doctrine,我是新来的。在Symfony 2.8.3项目中,我使用 php app/console doctrine:migrations:generate 但是当我在up()和down()方法中放入一些代码并尝试运行 php app/console doctrine:migrations:migrate 我错了: 预检查期间迁移20160314161511失败。错误通知:未定义的偏移量:1 [Symfony\Component\Debug\Exception\ContextErrorException

我是新来的。在Symfony 2.8.3项目中,我使用

php app/console doctrine:migrations:generate
但是当我在up()和down()方法中放入一些代码并尝试运行

php app/console doctrine:migrations:migrate
我错了:

预检查期间迁移20160314161511失败。错误通知:未定义的偏移量:1

[Symfony\Component\Debug\Exception\ContextErrorException] 注意:未定义的偏移量:1

我试图通过使用“clear”SQL或via scheme来放置不同的代码,甚至只使用//注释的左上/下方法。但仍然没有成功。 doctrinEmperationsBundle已安装并在AppKernel.php中注册。 以下是我的目标代码:

namespace Application\Migrations;

use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;

/**
 * Auto-generated Migration: Please modify to your needs!
 */
class Version20160314161511 extends AbstractMigration
{
    /**
     * @param Schema $schema
     */
    public function up(Schema $schema)
    {
        $this->addSql(
            "CREATE TABLE tblProductData (
            intProductDataId int(10) unsigned NOT NULL AUTO_INCREMENT,
              strProductName varchar(50) NOT NULL,
              strProductDesc varchar(255) NOT NULL,
              strProductCode varchar(10) NOT NULL,
              dtmAdded datetime DEFAULT NULL,
              dtmDiscontinued datetime DEFAULT NULL,
              stmTimestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
              PRIMARY KEY (intProductDataId),
              UNIQUE KEY (strProductCode)
            ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Stores product data'"
        );

    }

    /**
     * @param Schema $schema
     */
    public function down(Schema $schema)
    {
        $this->addSql(
            'DROP TABLE tblProductData'
        );

    }
}
以下是my config.yml的doctrine_migrations部分:

doctrine_migrations:
    dir_name: "%kernel.root_dir%/DoctrineMigrations"
    namespace: Application\Migrations
    table_name: migration_versions
    name: Application Migrations
config.yml I的doctrine部分保留默认值

当我使用

php app/console doctrine:migrations:status
我得到了可用的迁移:1和新的迁移:1这是库中的一个已知错误,它依赖于doctrinMigrations,此问题仅出现在Windows上。临时解决方法是转到
vendors/zend-code/Generator/MethodGenerator.php#L96
并更改:

protected static function clearBodyIndention($body) {
    ....
    $lines = explode(PHP_EOL, $body);
    ....
    $body = implode(PHP_EOL, $lines);
    ....
}
致:

doctrinMigrations的开发人员知道这个bug,您可以在这里找到更多信息


此时有一个to
zend code
,希望它能很快合并到主程序中,然后解决问题。

为什么要手工制作迁移文件。为什么不“条令:迁移:差异”?谢谢你的评论。我尝试使用:diff命令,但仍然有相同的错误。另外,当我向实体添加新字段时,该字段在创建的迁移中不存在。因此,未修改的自动生成的迁移将抛出此错误?好的,发生了一些奇怪的事情。我的建议是:创建一个新的symfony2项目,添加extact相同版本的条令迁移。添加一个简单的实体并自动生成一个迁移类。而不是运行它。如果可以的话,可以将迁移文件传输到测试项目并进行测试。
protected static function clearBodyIndention($body) {
    ....
    $lines = explode("\n", $body);
    ....
    $body = implode("\n", $lines);
    ....
}