Strange Unhandled Exception

For users or potential users.
Post Reply
Tom Zaccaria
Posts: 353
Joined: Mon Feb 25, 2008 3:09 am

Strange Unhandled Exception

Post by Tom Zaccaria » Sat Jun 23, 2018 1:46 pm

When trying to restore a backup at home I am getting;

Unhandled exception from ProgramEntry: Table '.\opendental\sigmessage' is marked as crashed and should be repaired
MySql.Data.MySqlClient.MySqlException
at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at OpenDentBusiness.DataConnection.<>c__DisplayClass81_0.<GetTable>b__1() in C:\Development\OPEN DENTAL SUBVERSION\opendental17.4\OpenDentBusiness\Db\DataConnection.cs:line 610
at OpenDentBusiness.DataConnection.RunDbAction(Action actionDb, DbConnection connection) in C:\Development\OPEN DENTAL SUBVERSION\opendental17.4\OpenDentBusiness\Db\DataConnection.cs:line 949
at OpenDentBusiness.DataConnection.GetTable(String command, Boolean hasConnLost) in C:\Development\OPEN DENTAL SUBVERSION\opendental17.4\OpenDentBusiness\Db\DataConnection.cs:line 610
at OpenDentBusiness.DataCore.GetTable(String command) in C:\Development\OPEN DENTAL SUBVERSION\opendental17.4\OpenDentBusiness\Db\DataCore.cs:line 14
at OpenDentBusiness.Db.GetTableWithRemotingRoleCheck(String command) in C:\Development\OPEN DENTAL SUBVERSION\opendental17.4\OpenDentBusiness\Db\Db.cs:line 76
at OpenDentBusiness.Db.GetTable(String command) in C:\Development\OPEN DENTAL SUBVERSION\opendental17.4\OpenDentBusiness\Db\Db.cs:line 42
at OpenDentBusiness.Crud.SigMessageCrud.SelectMany(String command) in C:\Development\OPEN DENTAL SUBVERSION\opendental17.4\OpenDentBusiness\Crud\SigMessageCrud.cs:line 36
at OpenDentBusiness.SigMessages.GetSigMessagesSinceDateTime(DateTime dateTimeSince) in C:\Development\OPEN DENTAL SUBVERSION\opendental17.4\OpenDentBusiness\Data Interface\SigMessages.cs:line 73
at OpenDental.ContrStaff.RefreshFullMessages() in C:\Development\OPEN DENTAL SUBVERSION\opendental17.4\OpenDental\Main Modules\ContrStaff.cs:line 1431
at OpenDental.ContrStaff.InitializeOnStartup() in C:\Development\OPEN DENTAL SUBVERSION\opendental17.4\OpenDental\Main Modules\ContrStaff.cs:line 813
at OpenDental.FormOpenDental.FormOpenDental_Load(Object sender, EventArgs e) in C:\Development\OPEN DENTAL SUBVERSION\opendental17.4\OpenDental\Main Modules\FormOpenDental.cs:line 2724
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Any help would be appreciated
drtmz

Tom Zaccaria
Posts: 353
Joined: Mon Feb 25, 2008 3:09 am

Re: Strange Unhandled Exception

Post by Tom Zaccaria » Mon Jun 25, 2018 2:27 am

I was able to run the database maintenance tool on the server, take a new backup and restore with no problem.

drtmz
OD 17.3.66

User avatar
cmcgehee
Posts: 711
Joined: Tue Aug 25, 2015 5:06 pm
Location: Salem, Oregon

Re: Strange Unhandled Exception

Post by cmcgehee » Mon Jun 25, 2018 8:20 am

With this sort of error, you can make a backup of the database, run the REPAIR TABLE command for the table that is crashed, and that should usually take care of it. I would still recommend calling support in this situation because sometimes the REPAIR TABLE command doesn't completely work.
Chris McGehee
Open Dental Software
http://www.opendental.com

User avatar
jsalmon
Posts: 1551
Joined: Tue Nov 30, 2010 12:33 pm
Contact:

Re: Strange Unhandled Exception

Post by jsalmon » Mon Jun 25, 2018 10:05 am

A lot of "hot backups" will have this problem because the tables are still being used which runs the risk of having the tables flagged as corrupt. If using a 3rd party software to make backups of Open Dental database files, make sure to stop the MySQL service in order to get a guaranteed good backup (tables won't be in use). Backups made from within Open Dental will not have this problem because they utilize MySQL in order to make the backup (thus each table will wait in line for a lock on the table before backing it up).

We here at HQ continue to use "hot backups" and just accept the fact that some tables will be flagged as corrupt and will either discard the backup (using only verified backups) or will repair them (as Chris mentioned).
Note: running the repair table command has the potential to lose partial or all of the data in the table depending on how MySQL deems it necessary to repair the table.
The best thing about a boolean is even if you are wrong, you are only off by a bit.

Jason Salmon
Open Dental Software
http://www.opendental.com

boboffice
Posts: 89
Joined: Sun Mar 29, 2009 7:11 am
Location: Poway, San Diego County, CA

Re: Strange Unhandled Exception

Post by boboffice » Mon Jun 25, 2018 1:23 pm

Would it be possible for the back-up function to automatically stop the necessary services, back up, then restart them? Better for the average user.
Robert Marcus DMD
Univ. of CT '93
Poway, CA

Tom Zaccaria
Posts: 353
Joined: Mon Feb 25, 2008 3:09 am

Re: Strange Unhandled Exception

Post by Tom Zaccaria » Mon Jun 25, 2018 2:19 pm

Although I did not stop mysql noone was logged in at the time of the backup.

drtmz

User avatar
jsalmon
Posts: 1551
Joined: Tue Nov 30, 2010 12:33 pm
Contact:

Re: Strange Unhandled Exception

Post by jsalmon » Mon Jun 25, 2018 2:46 pm

boboffice wrote:Would it be possible for the back-up function to automatically stop the necessary services, back up, then restart them? Better for the average user.
Yes, MySQL is just a typical service (on any Operating System) so whatever application you are using as the "back-up function" simply needs to get privileges to start and stop said service.
The best thing about a boolean is even if you are wrong, you are only off by a bit.

Jason Salmon
Open Dental Software
http://www.opendental.com

User avatar
jsalmon
Posts: 1551
Joined: Tue Nov 30, 2010 12:33 pm
Contact:

Re: Strange Unhandled Exception

Post by jsalmon » Mon Jun 25, 2018 2:49 pm

Tom Zaccaria wrote:Although I did not stop mysql noone was logged in at the time of the backup.
Open Dental doesn't technically need to be logged in to run queries, it simply needs to be running (e.g. a computer set as the "Computer Name to Receive New Email from" can download emails while no user is logged in).
http://www.opendental.com/manual/emailsetup.html
The best thing about a boolean is even if you are wrong, you are only off by a bit.

Jason Salmon
Open Dental Software
http://www.opendental.com

User avatar
jsalmon
Posts: 1551
Joined: Tue Nov 30, 2010 12:33 pm
Contact:

Re: Strange Unhandled Exception

Post by jsalmon » Mon Jul 16, 2018 11:22 am

jsalmon wrote:...If using a 3rd party software to make backups of Open Dental database files, make sure to stop the MySQL service in order to get a guaranteed good backup (tables won't be in use). Backups made from within Open Dental will not have this problem because they utilize MySQL in order to make the backup (thus each table will wait in line for a lock on the table before backing it up).
A little clarification; "Automatic backups made from Upgrading versions of Open Dental will not have this problem..."
I happened to be in the neighborhood of our Backup/Restore Tool code and the Backup button does not stop the service, thus making a "hot backup" which could have the aforementioned problem.
http://www.opendental.com/manual/backuptool.html

Also, our Backup/Restore Tool is not acceptable for users utilizing InnoDB table types.
The best thing about a boolean is even if you are wrong, you are only off by a bit.

Jason Salmon
Open Dental Software
http://www.opendental.com

Post Reply