有限行的Mysql Bug

时间:2017-03-31 09:42:24

标签: php mysql datetime limit

我在MYSQL(innoDB表)中有一个奇怪的错误。

我是下表:(用户) 姓氏(varchar)| name(varchar)| fiscalCode(char 16)| toUpdate(bool - int 1)| type(enum SSN | STP)|状态(A = alive | D =死)| lastUpdate(datetime)

此处查询选择:

Public Function SHA256Hash(ByVal s As String) As String
    Dim hashFunction As SHA256 = SHA256Managed.Create
    Dim bytes() As Byte = (New ASCIIEncoding).GetBytes(s)
    Dim hash() As Byte = hashFunction.ComputeHash(bytes)
    Return GetStringFromHash(hash)
End Function

Private _HardwareID As String
Public Function HardwareID() As String
    If String.IsNullOrWhiteSpace(_HardwareID) Then
        _HardwareID = SHA256Hash(String.Format("CPU>>{0}|BASE>>{1}|USER>>{2}", cpuID, baseID, userID))
    End If

    Return _HardwareID
End Function

Private Function identifier(ByVal wmiClass As String, ByVal wmiProperty As String)
    Dim result As String = String.Empty
    Dim mc As New Management.ManagementClass(wmiClass)
    Dim moc As Management.ManagementObjectCollection = mc.GetInstances()

    For Each mo As Management.ManagementObject In moc
        'Only get the first one
        If String.IsNullOrWhiteSpace(result) Then
            Try
                result = mo(wmiProperty).ToString
            Catch ex As Exception
            End Try
        End If
    Next

    Return result
End Function

Private Function cpuID() As String
    'Uses first CPU identifier available in order of preference
    'Don't get all identifiers, as it is very time consuming
    Dim retVal As String = identifier("Win32_Processor", "UniqueID")
    If String.IsNullOrWhiteSpace(retVal) Then 'If no UniqueID, use ProcessorID
        retVal = identifier("Win32_Processor", "ProcessorId")
        If String.IsNullOrWhiteSpace(retVal) Then 'If no ProcessorId, use Name
            retVal = identifier("Win32_Processor", "Name")
            If String.IsNullOrWhiteSpace(retVal) Then 'If no Name, use Manufacturer
                retVal = identifier("Win32_Processor", "Manufacturer")
            End If
        End If
    End If

    Return retVal
End Function

Private Function baseID() As String
    Return String.Concat(identifier("Win32_BaseBoard", "Model"), _
                         identifier("Win32_BaseBoard", "Manufacturer"), _
                         identifier("Win32_BaseBoard", "Name"), _
                         identifier("Win32_BaseBoard", "SerialNumber"))
End Function

Private Function userID() As String
    Return System.DirectoryServices.AccountManagement.UserPrincipal.Current.Guid.Value.ToString
End Function

这样做,我得到100个财务代码,但是如果我验证它们,有人有SELECT fiscalCode FROM users WHERE type = 'SSN' AND toUpdate = 1 AND status = 'A' ORDER BY lastUpdate ASC LIMIT 100 而某人有toUpdate = 0有日期,而在DB中有很多lastUpdate所以使用lastUpdate = '0000-00-00 00:00:00'我希望这是第一次

如果我使用ORDER BY lastUpdate ASC作为字段来转换查询,那么:

*

我得到了正确的结果。所有SELECT * FROM users WHERE type = 'SSN' AND toUpdate = 1 AND status = 'A' ORDER BY lastUpdate ASC LIMIT 100 都包含fiscalCodetoUpdate = 1status Atype SSN

为什么呢?这是Mysql的错误吗?

0 个答案:

没有答案