Symfony2 Doctrine Migration失败

时间:2016-03-14 15:05:41

标签: symfony doctrine

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

创建了镜像文件
php app/console doctrine:migrations:generate

但是当我在up()和down()方法中放入一些代码并尝试运行

php app/console doctrine:migrations:migrate

我弄错了:

  

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

     

[Symfony的\元器件\调试\异常\ ContextErrorException]    注意:未定义的偏移量:1

我尝试使用" clear"来设置不同的代码。 SQL或via方案,甚至只用//注释左上/下方法。但仍然没有成功。 DoctrineMigrationsBundle已在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'
        );

    }
}

这是我的config.yml的doctrine_migrations部分:

doctrine_migrations:
    dir_name: "%kernel.root_dir%/DoctrineMigrations"
    namespace: Application\Migrations
    table_name: migration_versions
    name: Application Migrations
config.yml的

doctrine部分我保留了默认值

当我使用

php app/console doctrine:migrations:status

我获得可用迁移:1和新迁移:1 非常感谢提前!

1 个答案:

答案 0 :(得分:0)

这是zend-code库中的已知错误,它是DoctrineMigrations的依赖项,此问题仅出现在Windows上。临时解决方法是转到vendors/zend-code/Generator/MethodGenerator.php#L96并更改:

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

到:

protected static function clearBodyIndention($body) {
    ....
    $lines = explode("\n", $body);
    ....
    $body = implode("\n", $lines);
    ....
}

DoctrineMigrations的开发人员知道此错误,您可以在此issue中找到更多信息。

此时有一个pull requestzend-code,希望很快就可以合并到主服务器中,然后解决问题。