gpt4 book ai didi

Symfony2 Doctrine 迁移失败

转载 作者:行者123 更新时间:2023-12-04 08:47:30 25 4
gpt4 key购买 nike

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

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

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

php app/console doctrine:migrations:migrate

我弄错了:

Migration 20160314161511 failed during Pre-Checks. Error Notice: Undefined offset: 1

[Symfony\Component\Debug\Exception\ContextErrorException] Notice: Undefined offset: 1

我试图通过使用“清晰”的 SQL 或通过方案来放置不同的代码,甚至只留下//注释的 up/down 方法。但仍然没有成功。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

最佳答案

这是 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,希望这会很快合并到 master 中,然后解决问题。

关于Symfony2 Doctrine 迁移失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35991094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com