【问题标题】:Sql-server to MySQL migration woes- maximum rowsize cannot exceed 65,535 bytesSql-server 到 MySQL 的迁移问题 - 最大行大小不能超过 65,535 字节
【发布时间】:2010-06-30 05:02:49
【问题描述】:

我正在将应用程序的数据库层从 MSSQL 迁移到 MySQL,当我尝试将 MSSQL 表迁移到 MySQL 时遇到了这个异常:

Row size too large. The maximum row size for the used table type
,not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs)

原来 MSSQL 表有很多 nvarchar 列,其有效行大小远大于 65535。我能想到的解决这个问题的唯一方法是更改​​我的应用程序设计,将大表拆分为较小的表,然后重新设计不是我期待的事情。

有没有办法在不重新设计应用程序的情况下克服这个问题?

提前致谢。
巴拉特·K。

【问题讨论】:

  • “您必须将某些列更改为 TEXT 或 BLOB”怎么样?
  • 这也不是很讨人喜欢。正在寻找一种不涉及框架重新设计的机制。
  • 您实际上不需要重新设计任何东西来使用 TEXT 或 BLOB。您能否针对导致您出现问题的表格发布示例 CREATE TABLE
  • 这是对已存在表的更改查询导致此问题。感谢@Dean、@Simon 的建议。由于查询是由我们的建模框架生成的,因此希望避免这种变化。但这似乎是最好的选择。
  • 你能改变 SQL Server 表上的列吗? NVARCHAR 通常为 Unicode 保留,每个字符占用 2 个字节,而不是 VARCHAR 中的典型 1

标签: mysql sql-server


【解决方案1】:

根据 MySQL 的文档:即使存储引擎能够支持更大的行,表的内部表示也具有 65,535 字节的最大行大小。所以你不能有这样的桌子。

您应该分析原始表格的数据以更改某些列的长度。或者将目标 MySQL 表的某些列设为“TEXT”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 2021-04-11
    相关资源
    最近更新 更多