Symfony2条令迁移失败
我是新来的。在Symfony 2.8.3项目中,我使用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
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);
....
}