olá Comdado,
meio dificil de uma base Mysql se conroper assim, já utilizo a algum tempo e nunca tive problemas.
mas.... de todo caso, vamos lá....
se vc importou sua base de dados de outra base, por exemplo o access, há alguns campos que o Mysql aplresenta com tipo suportado, mas que apresnenta erros nas querys , um exemplo é o decimal , troque por double.
outro fator que pode gerar erros é usar compos com nomes reservados, coisa que no access não havia problemas... então se vc tiver compos como : DATA, DESC, INT, VAL etc... renomeio esses campos.....
e poe fim, uma função para reparar tabelas, (nunca usei ... mas deve ser util para vc)
Option Explicit
Public Enum TypeRepair
QUICK = 0
EXTENDED = 1
USE_FRM = 2
End Enum
#If False Then
Private QUICK, EXTENDED, USE_FRM
#End If
Public Function RepararTabelas(Optional MySQLOpcao As TypeRepair = QUICK) As Boolean
On Error GoTo errHandler
Dim OptRepair As String, rsRepair As New ADODB.Recordset
If MySQLOpcao = EXTENDED Then _
OptRepair = "EXTENDED"
If MySQLOpcao = QUICK Then _
OptRepair = "QUICK"
If MySQLOpcao = USE_FRM Then _
OptRepair = "USE_FRM"
With rsRepair
.Open "SHOW TABLE STATUS;", db
Do While Not (.BOF Or .EOF)
db.BeginTrans
db.Execute "REPAIR TABLE " & .Fields.Item("Name").Value & " " & OptRepair & ";", , 0
db.CommitTrans
.MoveNext
Loop
End With
rsRepair.Close: Set rsRepair = Nothing
RepararTabelas = True
Exit Function
errHandler:
rsRepair.Close: Set rsRepair = Nothing
End Function
' não é de minha autoria, baixei aki no site mesmo, pena não lembrar autoria.