Php 带有Oracle数据库的Symfony 2.8-标识符太长

Php 带有Oracle数据库的Symfony 2.8-标识符太长,php,oracle,symfony,doctrine-orm,Php,Oracle,Symfony,Doctrine Orm,我正在尝试使用来自的Oracle数据库将phpcr_odm配置为Symfony 2.8 这当我试图运行php应用程序/控制台原则:schema:create时,我的控制台返回错误 [Doctrine\DBAL\Exception\DriverException] An exception occurred while executing 'CREATE UNIQUE INDEX UNIQ_37E65615460D9FD7413BC13C1AC10DC4E7087E10 ON phpc

我正在尝试使用来自的Oracle数据库将phpcr_odm配置为Symfony 2.8 这当我试图运行
php应用程序/控制台原则:schema:create
时,我的控制台返回错误

  [Doctrine\DBAL\Exception\DriverException]
  An exception occurred while executing 'CREATE UNIQUE INDEX UNIQ_37E65615460D9FD7413BC13C1AC10DC4E7087E10 ON phpc
  r_binarydata (node_id, property_name, workspace_name, idx)':
  ORA-00972: identifier is too long
  [Doctrine\DBAL\Driver\OCI8\OCI8Exception]
  ORA-00972: identifier is too long
我知道Oracle SQL将唯一索引限制为30个字符,但我不知道如何在symfony中执行唯一索引之前限制它们。有人能告诉我如何解决这个问题吗


致以最诚挚的问候

如果您自己在实体上声明唯一约束,您可以手动设置其名称:

@ORM\Table(name="phpcr_binarydata", uniqueConstraints={@ORM\UniqueConstraint(name="SMALL_KEY_NAME_HERE", columns={"node_id", "property_name", "workspace_name", "idx"})})

如果数据库创建不在您的控制之下,则在
原则\DBAL\Schema\SchemaConfig::$maxIdentifierLength
中配置最大标识符长度,您可以尝试扩展和覆盖该长度。

在SQL-92中,标准的更高版本似乎可以选择允许128个字符的名称。否则这就是解决方案:

“phpcr\u binarydata”不是我创建的表,我发现jackalope供应商正在使用此表,因此我认为我无法为此唯一索引创建唯一约束