jpahullo / moodle-tool_mergeusers

Merge users script for Moodle
https://moodle.org/plugins/view.php?plugin=tool_mergeusers
22 stars 52 forks source link

Merge User account error #174

Open tifano opened 4 years ago

tifano commented 4 years ago

Hi, Has anyone come across this issue? Spent hours but no luck.

  1. Choose users to merge / ► 2. Confirm users to merge / ► 3. Merging results and log

Merged «test1» (user ID = 1157) into «tester@test.com» (user ID = 3087)

For further reference, these results are recorded in the log id 7. Some error occurred:

Exception thrown when merging: 'Error reading from database". You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-LAST USED} WHERE userid = '1157'' at line 1 Trace:

0 /home/otc/public_html/lib/dml/mysqli_native_moodle_database.php(1247): moodle_database->query_end(false)

1 /home/otc/public_html/admin/tool/mergeusers/lib/table/generictablemerger.php(297): mysqli_native_moodle_database->get_records_sql('SELECT id FROM ...')

2 /home/otc/public_html/admin/tool/mergeusers/lib/table/generictablemerger.php(73): GenericTableMerger->get_records_to_be_updated(Array, 'userid')

3 /home/otc/public_html/admin/tool/mergeusers/lib/mergeusertool.php(268): GenericTableMerger->merge(Array, Array, Array)

4 /home/otc/public_html/admin/tool/mergeusers/lib/mergeusertool.php(192): MergeUserTool->_merge('3087', '1157')

5 /home/otc/public_html/admin/tool/mergeusers/index.php(135): MergeUserTool->merge('3087', '1157')

6 {main}

Started merging at Monday, 4 May 2020, 1:27 AM Merge took 2 seconds

Merge failed! Your database engine supports transactions. Therefore, the whole current transaction has been rolled back and no modification has been made to your database.

Here is the screenshot:

image

Thanks for your help

jpahullo commented 4 years ago

Hi!

Thanks for your report.

This error usually happens when a table in the moodle database has no column id on it, which is mandatory in Moodle on any table.

This is similar to the situation in https://github.com/ndunand/moodle-tool_mergeusers/issues/173#issuecomment-617738111. Follow those instructions to let you merge users, without processing any table that has no id column.

Thanks for your time.

Keep us updated.

Regards!

jpahullo commented 4 years ago

This make me feel that we should prevent merging database tables without idcolumn, and inform it on the Moodle web (either on the plugin settings and or the merging results).

tifano commented 4 years ago

Thanks Jordi, will give it a go and update.

Cheers

On Tue, May 5, 2020 at 4:07 AM Jordi Pujol-Ahulló notifications@github.com wrote:

Hi!

Thanks for your report.

This error usually happens when a table in the moodle database has no column id on it, which is mandatory in Moodle on any table.

This is similar to the situation in #173 (comment) https://github.com/ndunand/moodle-tool_mergeusers/issues/173#issuecomment-617738111. Follow those instructions to let you merge users, without processing any table that has no id column.

Thanks for your time.

Keep us updated.

Regards!

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/ndunand/moodle-tool_mergeusers/issues/174#issuecomment-623618579, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADQHGWVJGTEBMKV4ARGEP33RP3757ANCNFSM4MYFQQSA .

jpahullo commented 3 years ago

We should use this issue to improve the plugin to, automatically, prevent mergint database tables without id column. id columns is requisite in Moodle tables. Third party plugins or other kind of tables should be omitted from processing if they do not have an id column.

pmonty commented 3 years ago

I have added a message in regards to the temporary config.local.php fix not working here https://github.com/ndunand/moodle-tool_mergeusers/issues/173

but as for a more permanent fix would the ideal way just be to do a check using SQL if the table has an id column? Is that the route the would be performant and quickest turn around for a new release?

I guess you could not check the moodle specific tables as they are always expected to have id