我是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 非常感谢提前!
答案 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 request到zend-code
,希望很快就可以合并到主服务器中,然后解决问题。