我正在将一个相当大的系统移动到新的服务器和新的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,在phpMyAdmin的查询中运行LENGTH(report)
(报告是字段名称)(将很乐意显示所有行)同意,它显示长度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
和OdBcConnection
,这一切都有效!)
我不知道从这里开始,没有过滤我不想要做的所有数据,删除所有长字段我不确定如何解决这个问题?
任何建议都非常感谢!
============
更新以防任何人从接受的答案中获得帮助(非常感谢):
更改我的代码:
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))
删除了这个问题,现在长字段工作正常。
答案 0 :(得分:0)