执行SSIS包时出现mysql错误
我正在使用SSIS将数据从MSSQL传输到MySQL。我已经完成了所有表的映射。但是在执行包时,我遇到了错误: [tabl_name[1056]]错误:数据插入期间发生异常,提供程序返回的消息为:错误[07006][MySQL][ODBC 3.51驱动程序][mysqld-5.1.33-community-log]受限数据类型属性冲突(SQL_C_数值) [产品[402]]错误:数据插入期间发生异常,从提供程序返回的消息是:无法将类型为“System.Int32”的对象强制转换为类型为“System.Char[]” 我还比较了所有列的数据类型,发现它们是相同的。 之后,我做了一些研究,发现数据类型decimal(10,2)存在问题,但我无法找到解决方案执行SSIS包时出现mysql错误,mysql,sql-server,ssis,Mysql,Sql Server,Ssis,我正在使用SSIS将数据从MSSQL传输到MySQL。我已经完成了所有表的映射。但是在执行包时,我遇到了错误: [tabl_name[1056]]错误:数据插入期间发生异常,提供程序返回的消息为:错误[07006][MySQL][ODBC 3.51驱动程序][mysqld-5.1.33-community-log]受限数据类型属性冲突(SQL_C_数值) [产品[402]]错误:数据插入期间发生异常,从提供程序返回的消息是:无法将类型为“System.Int32”的对象强制转换为类型为“Syst
提前感谢。解决此类问题的一个简单方法是临时将有问题的列从decimal转换为varchar,完成迁移后,将其转换回decimal
上述情况适用于MSSQL,因为MSSQL会投诉错误 在数据流任务中使用数据转换,或在源查询中强制转换无效类型 DECLARE @bit as bit set @bit = 1 SELECT CAST(@bit as int) 将@bit声明为bit 设置@bit=1 选择强制转换(@位为int)
从Access转换到ODBC时,我遇到了相同的错误(在64位上,MS JET将不再运行)。我的FldSeqnr字段为十进制(15,0) 定义:
Dim gtSelectSQL As String = "SELECT FldText FROM Data WHERE CollCode = ? AND CollSeq = ? AND FldCode = ? AND FldSeqnr = ?"
Dim DRgtSelect As odbcDataReader = Nothing
Dim DbCgtSelect As odbcCommand
Dim gtSelP1 As New odbcParameter("@CollCode", odbc.odbcType.VarChar, 4)
Dim gtSelP2 As New odbcParameter("@CollSeq", Odbc.OdbcType.Int, 4)
Dim gtSelP3 As New odbcParameter("@FldCode", odbc.odbcType.VarChar, 4)
Dim gtSelP4 As New odbcParameter("@FldSeqnrs", odbc.odbcType.Decimal, 16)
DbCgtSelect = New odbcCommand(gtSelectSQL, DbConn)
Dim NrErr As Integer = 0
Retrysql:
Try
dSelP1.Value = CollCode
dSelP2.Value = CollSeq
dSelP3.Value = p.FldCode
dSelP4.Value = strt
dSelP5.Value = endn
DRdSelect = DbCdSelect.ExecuteReader()
Do While (DRdSelect.Read())
...
End Do
Catch ex As Exception
If ex.Message.Substring(0, 13) = "ERROR [07006]" Then
If NrErr = 0 Then
NrErr += 1
GoTo retrySql
End If
End If
MsgBox(ex.ToString())
我知道它很满,但它可以工作:错误只出现在第一个ExecuteReader上。其他人都很好。我这周也头疼得厉害。我尝试了很多方法。谢天谢地,最后,他们中的一个成功了。希望能对你有所帮助 对于数据类型为Int、datetime、decimal…的一些列,这里我将其标识为ColumnA,并将其用作datetime类型
这对我很有用。在我的情况下,我不能使用忽略失败选项。因为如果我这样做,我将丢失数千行数据。是的..我认为相同的解决方案…但问题是我无法更改MS SQL表..因此需要找到某种方法来操作MySQL。我还发现问题在于位数据类型,在MSSQL中,它显示的是true和false,而不是0 n 1,因此,我将数据类型更改为varchar,并尝试了所有可能的方法,但没有成功…因此我正在寻找与MS SQL位数据类型等效的MYSQL..thanksmysql没有位数据类型(最接近的是int)是的…这就是…我将数据类型更改为int,但它无法工作…我尝试了其他数据类型,如varchar,二进制tinyint和boolean…仍然没有答案…非常好奇知道什么是破解…谢谢你的回答。得到破解…有一个选项说忽略失败…之后它现在工作正常:)谢谢。