Uploaded image for project: 'Plugins'
  1. Plugins
  2. CONTRIB-8408

Upgrade database SQL statements fail for SQL Server



    • Bug
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 3.9.4
    • None
    • Module: Questionnaire
    • None
    • Release 3.9.1 (Build - 2020111801)


      I was trying to install the latest Questionnaire 3.9.1 (Build - 2020111801) on Moodle. I am using MS SQL Server 2016. It seems the DML is not the right syntax for SQL Server.

      Plugins check

      This page displays plugins that may require your attention during the upgrade, such as new plugins to be installed, plugins to be upgraded, missing plugins etc. Additional plugins are displayed if there is an available update for them. It is recommended that you check whether there are more recent versions of plugins available and update their source code before continuing with this Moodle upgrade.

      Plugins requiring attention

      Plugins requiring attention 1
      All plugins| 425

      Plugin name / Directory Current version New version Requires Source / Status
      Activity modules
      2017111103 2020062302
      • Moodle 2019052000
      Additional To be upgraded


      Error is:

      Upgrading to new version


      Error writing to database

      More information about this error
      Debug info: SQLState: 42000<br>
      Error Code: 102<br>
      Message: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near 'qr'.<br>

      UPDATE mdl_questionnaire_response qr INNER JOIN mdl_questionnaire_attempts qa ON qr.id = qa.rid SET qr.questionnaireid = qa.qid
      [array (
      Error code: dmlwriteexception
      Stack trace: * line 489 of \lib\dml\moodle_database.php: dml_write_exception thrown

      • line 324 of \lib\dml\sqlsrv_native_moodle_database.php: call to moodle_database->query_end()
      • line 431 of \lib\dml\sqlsrv_native_moodle_database.php: call to sqlsrv_native_moodle_database->query_end()
      • line 820 of \lib\dml\sqlsrv_native_moodle_database.php: call to sqlsrv_native_moodle_database->do_query()
      • line 730 of \mod\questionnaire\db\upgrade.php: call to sqlsrv_native_moodle_database->execute()
      • line 866 of \lib\upgradelib.php: call to xmldb_questionnaire_upgrade()
      • line 565 of \lib\upgradelib.php: call to upgrade_plugins_modules()
      • line 1917 of \lib\upgradelib.php: call to upgrade_plugins()
      • line 713 of \admin\index.php: call to upgrade_noncore()


      I believe the correct T-SQL syntax is :

      UPDATE qr SET qr.questionnaireid = qa.qid FROM mdl_questionnaire_response qr INNER JOIN mdl_questionnaire_attempts qa ON qr.id = qa.rid;




            mchurch Mike Churchward
            r-oberto R-oberto
            0 Vote for this issue
            1 Start watching this issue