SELECT Query因为限制而失败,所以它说

时间:2017-06-08 14:45:33

标签: mysql vb.net

我正在对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语句中发生这种情况?我该怎么办?

1 个答案:

答案 0 :(得分:0)

这个伟大的社区帮助我意识到这样的错误可能是由于数据库和数据集之间的列定义不匹配(例如char字段的大小)导致的,并且指向了另一个线程:https://stackoverflow.com/a/7029713/3718031

与此可能有关:Column longtext exceeds the MaxLength limit

就我而言,有一些列带有" TEXT"数据类型似乎可能是问题。

我非常感谢所有在我的问题中发表评论并帮助我学习这些知识的人。

编辑:由于这个问题已经投票决定并且我的问题仍然存在,我尝试进一步调查并制作another question,我希望这个问题得到适当的曝光。< / p>