Doctrine2, плохой синтаксис для уникального индекса, SQL Server 2005

Я пытаюсь настроить Doctrine2 внутри моего проекта, он работает нормально, но у меня возникла проблема при создании схемы с параметром столбцов: «unique = true»

моя сущность:

<?php
namespace Entities\Test;
/**
* @Entity(repositoryClass="")
* @Table(name="test")
*/
Class Test {
/**
* @Id
* @Column(type="integer",unique=true, nullable=false)
*/
private $id;

/**
* @Column(type="string", length=32, unique=true, nullable=false)
*/
private $test;
}

Затем я просто использую консольную команду:

orm:schema-tool:update --dump-sql

Он возвращает хороший SQL:

CREATE TABLE test (id INT NOT NULL, test NVARCHAR(32) NOT NULL, PRIMARY KEY (id));
CREATE UNIQUE INDEX UNIQ_D87F7E0CBF396750 ON test (id) WHERE id IS NOT NULL;
CREATE UNIQUE INDEX UNIQ_D87F7E0CD87F7E0C ON test (test) WHERE test IS NOT NULL;

Но когда я выполняю его (—force), я получаю ошибку:

[Doctrine\DBAL\DBALException]
An exception occurred while executing 'CREATE UNIQUE INDEX UNIQ_D87F7E0CBF3
96750 ON test (id) WHERE id IS NOT NULL':

SQLSTATE [42000, 156]: [Microsoft][SQL Server Native Client 11.0][SQL Serve
r]Syntaxe incorrecte vers le mot cl▒ 'WHERE'.

Кажется, что этот синтаксис для SQLServer> = 2008, но я работаю с SQLServer2005, поэтому я добавил хорошую платформу в свой массив параметров:

    $conn = array(
'driver' => 'sqlsrv',
'user' => '****_dev',
'password' => '*******',
'host' => '*.*.*.*',
'dbname' => 'dbname',
'platform' => new Doctrine\DBAL\Platforms\SQLServer2005Platform(),
);

$this->em = EntityManager::create($conn, $config);

Но это ничего не меняет в коде SQL, у меня все еще есть этот «неправильный синтаксис около ГДЕ»

Я работаю с последней стабильной версией доктрины, загруженной с помощью composer, и я попробовал ее в новом чистом проекте, он все тот же, я много искал похожую проблему, но ничего не нашел, думаю, что-то упустил.

Любая помощь приветствуется !

Спасибо, что читаете меня.

1

Решение

Я нашел способ это исправить, но меня это не устраивает,
Я только что прокомментировал эти строки в Doctrine \ DBAL \ Platforms \ SQLServerPlatform.php

public function getCreateIndexSQL(Index $index, $table)
{
$constraint = parent::getCreateIndexSQL($index, $table);

//        if ($index->isUnique() && !$index->isPrimary()) {
//        $constraint = $this->_appendUniqueConstraintDefinition($constraint, $index);
//        }

return $constraint;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]