Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-37420

Installation and restoring courses backup won't work if it use one postgres database with many schemas (others than public schema)

    Details

    • Testing Instructions:
      Hide

      1/ run phpunit tests for pg, install and upgrade
      2/ set up new scheme in pg server
      3/ set $CFG->dboptions['dbschema'] = 'yournewschemaname';
      4/ run tests again, install

      Show
      1/ run phpunit tests for pg, install and upgrade 2/ set up new scheme in pg server 3/ set $CFG->dboptions ['dbschema'] = 'yournewschemaname'; 4/ run tests again, install
    • Affected Branches:
      MOODLE_21_STABLE, MOODLE_22_STABLE, MOODLE_23_STABLE, MOODLE_24_STABLE, MOODLE_25_STABLE
    • Fixed Branches:
      MOODLE_22_STABLE, MOODLE_23_STABLE, MOODLE_24_STABLE
    • Pull from Repository:
    • Pull Master Branch:
      w51_MDL-37420_m25_pgschema

      Description

      Postgres DB support schemas like oracle does and you can create many schemas in one Database, your tables will be grouped by schemas. The default schema in postgres is "public".
      Until moodle 1.9.x, i can install many moodles using only one postgres database, with many postgres db schemas ("moodle1","moodle2",...) for example.
      For this i used this commands:

      CREATE USER "moodle-1";
      CREATE SCHEMA "moodle-1" ;
      ALTER SCHEMA "moodle-1" OWNER TO "moodle-1";
      GRANT ALL ON SCHEMA "moodle-1" TO "moodle-1"
      ALTER USER "moodle-1" SET search_path TO "moodle-1";

      For moodle 2.x or above, it's seems the installation process ignores the command:
      SET search_path TO "moodle-1", and tries to use the first schema that it found, give this installation errors:
      "Config table does not contain version, can not continue, sorry."
      "Coding error detected, it must be fixed by a programmer: block_manager has not yet loaded the blocks, to it is too soon to request the information you asked for."

      But it's can be fixed by installing moodle on a new database, with only one schema and after installation, dump it and restore on the other database, moodle works fine!

      The same thing occurs when i try to restore a course backup, if moodle db has many schemas it's goes wrong ("DDL" or "DTL" error, something like that), if not, works fine. With same moodle version, with same DB data, only difference is one with many DB schemas and other with only one.

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Fix Release Date:
                  14/Jan/13