我正在将一个相当大的系统转移到一个新的服务器和新的 MySQL 数据库上。
该系统已经使用 ODBC 数据驱动程序在 MySQL 上运行了几年,我现在使用 MySQL 驱动程序并开始遇到问题。
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
一些谷歌搜索把我带到了这篇文章:
在阅读了包括 MySQL 文档在内的其他一些文档后,我发现问题在于text
我的数据库中的某些字段具有相当大的内容。
我将问题的一个实例追溯到单独的记录,修改了其中一个text
字段中的数据,使其更短并且消除了问题。
将内容放入 MS Word 后,字符数为 30,000,LENGTH(report)
在 phpMyAdmin 上的 Query 中运行(报告是字段名称)(它会愉快地显示所有行)同意,它显示长度为 33108
所以,这一定是问题所在,但我肯定可以处理这种数据吗?
我不确定问题出在哪里,是新的数据库设置,还是 MySQL 驱动程序的使用?
我正在尝试DataTable
按如下方式使用数据:
Public Shared Function getTable() as DataTable
Dim connection As MySqlConnection = Common.getConnection()
connection.Open()
Dim connect As MySqlCommand = Common.createCommand(sql, connection)
Dim getData As New DataTable()
getData.Load(connect.ExecuteReader(CommandBehavior.CloseConnection))
return getData
End Function
Public Shared Function getConnection() As MySqlConnection
Dim DBConnection As String
DBConnection = ConfigurationManager.ConnectionStrings("dbConn").ConnectionString
Dim oConnection As MySqlConnection = New MySqlConnection(DBConnection)
getConnection = New MySqlConnection(DBConnection)
End Function
Public Shared Function createCommand(sql As String, connection As MySqlConnection) As MySqlCommand
createCommand = New MySqlCommand(sql, connection)
End Function
(以前我使用OdBcCommand
and OdBcConnection
s 并且一切正常!)
我不确定从这里去哪里,没有过滤我不想做的所有数据,并删除所有长字段我不确定如何解决这个问题?
非常感谢任何建议!
=============
更新以防万一,从接受的答案(非常感谢):
更改我的代码:
Dim getData As New DataTable()
getData.Load(connect.ExecuteReader(CommandBehavior.CloseConnection))
至:
Dim dataset As New DataSet()
Dim getData As New DataTable()
dataset.Tables.Add(getData)
getData.DataSet.EnforceConstraints = False
getData.Load(connect.ExecuteReader(CommandBehavior.CloseConnection))
删除了这个问题,现在长字段工作正常。