我正在对MySQL数据库运行查询,其语句只是
SELECT * FROM tableOperationsHistory;
然而,它失败了,我得到了这个例外(我把它翻译成英文):
激活限制失败。一行或多行包含值 违反非空,唯一或外键限制。
这是发生错误的例程:
Public Function RetrieveTable(ByVal command_text As String, Optional ByVal parameters As ParameterSet = Nothing) As DataTable
Dim dt As New DataTable, retry = False
Do
Using comm = conn.CreateCommand
comm.CommandText = command_text
If parameters IsNot Nothing Then
Dim par As DbParameter
For Each pair In parameters
par = comm.CreateParameter
par.ParameterName = pair.Key
par.Value = pair.Value
comm.Parameters.Add(par)
Next
End If
Dim rdr As DbDataReader
RequestConnection()
Try
rdr = comm.ExecuteReader
dt.Load(rdr)
retry = False
Catch ex As Exception
retry = ShouldRetry(ex) 'EXCEPTION IS CAUGHT HERE
End Try
DismissConnection()
End Using
Loop While retry
Return dt
End Function
这是表定义语句:
CREATE TABLE `tableOperationsHistory` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`numero` varchar(45) DEFAULT NULL,
`pasta_id` int(11) DEFAULT NULL,
`dataHoraInicioPrazo` datetime DEFAULT NULL,
`dataHoraFinalPrazo` datetime DEFAULT NULL,
`urgente` tinyint(4) DEFAULT NULL,
`setorOrigem_id` int(11) DEFAULT NULL,
`unidade_id` int(11) DEFAULT NULL,
`setor_id` int(11) DEFAULT NULL,
`usuario_id` int(11) DEFAULT NULL,
`modalidadeComunicacaoJudicial_id` int(11) DEFAULT NULL,
`modalidadeRepercussao_id` int(11) DEFAULT NULL,
`especieTarefa_id` int(11) DEFAULT NULL,
`postIt` varchar(255) DEFAULT NULL,
`teor_observacao` varchar(255) DEFAULT NULL,
`comunicacaoJudicial_id` int(11) DEFAULT NULL,
`tarefa_id` int(11) DEFAULT NULL,
`mensagens` text,
`criadoPor_id` int(11) DEFAULT NULL,
`criadoEm` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=92 DEFAULT CHARSET=latin1;
如何在SELECT语句中发生这种情况?我该怎么办?
答案 0 :(得分:0)
这个伟大的社区帮助我意识到这样的错误可能是由于数据库和数据集之间的列定义不匹配(例如char字段的大小)导致的,并且指向了另一个线程:https://stackoverflow.com/a/7029713/3718031
与此可能有关:Column longtext exceeds the MaxLength limit
就我而言,有一些列带有" TEXT"数据类型似乎可能是问题。
我非常感谢所有在我的问题中发表评论并帮助我学习这些知识的人。
编辑:由于这个问题已经投票决定并且我的问题仍然存在,我尝试进一步调查并制作another question,我希望这个问题得到适当的曝光。< / p>