Ken (and Jerry), here's another option I used for our messed up table mdl_backup_courses:
Save this query to an input file (for example query.sql), you can use your own timestamps for laststarttime, lastendtime and nextstarttime. Keep in mind that lasstarttime must be a timestamp before lastendtime and that nexstarttime must be the scheduled time of your automated backup settings (in my example 01:30).
use your-moodle-database-name;
select "TRUNCATE mdl_backup_courses;";
select "INSERT INTO mdl_backup_courses ( courseid, laststarttime, lastendtime, laststatus, nextstarttime) VALUES ( " , id , " , " , UNIX_TIMESTAMP('2019-03-05 08:05') ,"," , UNIX_TIMESTAMP('2019-03-05 08:10') , " , 3, ", UNIX_TIMESTAMP('2019-03-06 01:30'), ");" from mdl_course order by id;
The query generates an sql script that regenerates your mdl_backup_courses based on all the courses in mdl_course:
Run the query.sql on your database server with:
mysql -s -uyour-db-user -pyour-db-user-password < query.sql ( > output.sql )
Example output.sql
TRUNCATE mdl_backup_courses;
INSERT INTO mdl_backup_courses ( courseid, laststarttime, lastendtime, laststatus, nextstarttime) VALUES ( 1 , 1551769500 , 1551769800 , 3, 1551832200 );
INSERT INTO mdl_backup_courses ( courseid, laststarttime, lastendtime, laststatus, nextstarttime) VALUES ( 2 , 1551769500 , 1551769800 , 3, 1551832200 );
INSERT INTO mdl_backup_courses ( courseid, laststarttime, lastendtime, laststatus, nextstarttime) VALUES ( 3 , 1551769500 , 1551769800 , 3, 1551832200 );
INSERT INTO mdl_backup_courses ( courseid, laststarttime, lastendtime, laststatus, nextstarttime) VALUES ( 4 , 1551769500 , 1551769800 , 3, 1551832200 );
...
...
Now load the output.sql with:
mysql -s -uyour-db-user -pyour-db-user-password < output.sql
Your table mdl_backup_courses is recreated with the content of table mdl_course.