Doctrine 1
  1. Doctrine 1
  2. DC-791

[PostgreSQL] In case model is build from existing database sequence name is invalid and doctrine throw exception

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Blocker Blocker
    • Resolution: Unresolved
    • Affects Version/s: 1.2.2
    • Fix Version/s: None
    • Component/s: Schema Files
    • Labels:
      None
    • Environment:
      symfony 1.4.5, postgresql 8.4, debian lenny, nginx

      Description

      Firstly I created database directly in postgresql.
      After that I generated schema from existsing database and after all i built model.

      When I try to insert new record to database I received following error:

      sequence "Category_id_seq" does not exist

      In schema file sequence name is defined like this: sequence: '"Address_id_seq"'
      There's are apostrophes and quotes.

      In Category model file is same like above, apostrophes and quotes.

      When I remove quotes from sequence in model files everything is ok and there're no problems with insert new row to database.

        Activity

        Hide
        Przemysław Ciąćka added a comment -

        Problem are quotes in sequence name.
        Sequence names in schema built from existing database have quotes in their names, e.g ' "Address_seq" ' and Doctrine try to execute sequence with quotes but in database names exist without quotes.

        Temporarly I fixed it by add str_replace() into importer from PostgreSQL - now in schema sequence names are without quotes.

        Show
        Przemysław Ciąćka added a comment - Problem are quotes in sequence name. Sequence names in schema built from existing database have quotes in their names, e.g ' "Address_seq" ' and Doctrine try to execute sequence with quotes but in database names exist without quotes. Temporarly I fixed it by add str_replace() into importer from PostgreSQL - now in schema sequence names are without quotes.
        Hide
        Enrico Stahn added a comment -

        There are 2 solutions to your problem. The first is to change the sequence name in the schema, the second is to change the doctrine configuration.

        The default behavior of doctrine is to add a "_seq" to each sequence name. If you remove this part from you sequence name then it sould work as expected. The second option is to change the behavior of doctrine with the following configuration parameter:

         
        Doctrine_Manager::getInstance()->setAttribute(Doctrine_Core::ATTR_SEQNAME_FORMAT, '%s'); 
        

        default: Doctrine_Manager::getInstance()->setAttribute(Doctrine_Core::ATTR_SEQNAME_FORMAT, '%s_seq');

        Show
        Enrico Stahn added a comment - There are 2 solutions to your problem. The first is to change the sequence name in the schema, the second is to change the doctrine configuration. The default behavior of doctrine is to add a "_seq" to each sequence name. If you remove this part from you sequence name then it sould work as expected. The second option is to change the behavior of doctrine with the following configuration parameter: Doctrine_Manager::getInstance()->setAttribute(Doctrine_Core::ATTR_SEQNAME_FORMAT, '%s'); default: Doctrine_Manager::getInstance()->setAttribute(Doctrine_Core::ATTR_SEQNAME_FORMAT, '%s_seq');

          People

          • Assignee:
            Jonathan H. Wage
            Reporter:
            Przemysław Ciąćka
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated: