我是Symfony的新手。在Symfony的2.8.3项目,我创建了使用Symfony2原则迁移失败
php app/console doctrine:migrations:generate
mirgation文件,但是当我把一些代码了()和向下()方法,并尝试运行
php app/console doctrine:migrations:migrate
我得到的错误:
迁移20160314161511在预检时失败。错误通知:未定义偏移:1
[Symfony的\元器件\调试\异常\ ContextErrorException] 注意:未定义偏移:1
我试图通过使用 “透明” SQL或经由方案把不同的代码,甚至只留下//注释的向上/向下方法。但仍然没有成功。 DoctrineMigrationsBundle已在AppKernel.php中安装并注册。 这里是我的目标mirgation的代码:
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部分:config.yml的
doctrine_migrations:
dir_name: "%kernel.root_dir%/DoctrineMigrations"
namespace: Application\Migrations
table_name: migration_versions
name: Application Migrations
学说节我留下了默认值
当我用
php app/console doctrine:migrations:status
我得到可用迁移:1和新迁移:1 非常感谢!
为什么你要手工制作迁移文件。为什么不“学说:迁移:差异”? – Putr
感谢您的评论。我尝试使用:diff命令,但我仍然有同样的错误。另外,当我将新字段添加到实体时,此字段在创建的迁移中不存在。 – Partagas
那么,一个未经修改的自动生成的迁移会抛出这个错误? – Putr