gpt4 book ai didi

mysql - 移动数据库和驱动程序后无法启用约束错误

转载 作者:搜寻专家 更新时间:2023-10-30 20:57:55 25 4
gpt4 key购买 nike

我正在将一个相当大的系统迁移到新服务器和新 MySQL 数据库。

系统已经使用 ODBC 数据驱动程序在 MySQL 上运行了几年,我现在使用 MySQL 驱动程序并开始遇到问题。

Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

谷歌搜索让我看到了这篇文章:

http://weblogs.asp.net/rosherove/archive/2004/10/03/DataSet-hell-2D00-_2200_Failed-to-enable-constraints.-One-or-more-rows--contain-values_2E002E002E002E002200_.aspx

通读了包括 MySQL 文档在内的其他一些文档后,我发现问题出在我的数据库中的某些 text 字段,这些字段的内容非常多。

我将问题的一个实例追溯到单个记录,修改了其中一个 text 字段中的数据,使其更短并解决了问题。

将内容放入 MS Word 后,字符数为 30,000,在 phpMyAdmin 上的查询中运行 LENGTH(report)(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

(之前我使用的是 OdBcCommandOdBcConnection 并且一切正常!)

如果不过滤我不想做的所有数据并删除所有长字段,我不确定从这里该何去何从我不确定如何解决这个问题?

非常感谢任何建议!

============

从已接受的答案中更新以防对其他人有帮助(非常感谢):

更改我的代码:

    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))

解决了这个问题,现在长字段可以正常工作了。

最佳答案

我找到的解决方案很少。

  • 清除数据集/数据表并重新绑定(bind)。继续阅读 here .

  • 要么不调用 FillSchema,要么禁用对数据表的约束检查。继续阅读 here .

  • 将 EnforceConstraints 设置为 false,然后加载数据。

    Dim getData As New DataTable()
    getData.DataSet.EnforceConstraints = false;
    getData.Load(connect.ExecuteReader(CommandBehavior.CloseConnection))
    return getData

    继续阅读 here .

关于mysql - 移动数据库和驱动程序后无法启用约束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14532053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com