在本地主机上运行MySQL列宽限制但不在AWS服务器上

在本地主机上运行MySQL列宽限制但不在AWS服务器上

问题描述:

我有一个包含650列和1行的MySQL表。 我知道这是一个糟糕的设计(我继承),它将被移动到一个简单的两列布局,但此刻我试图诊断一个不同的问题,以便能够理解它。 我不想解决设计问题,如果它会掩盖我目前面临的系统配置问题。在本地主机上运行MySQL列宽限制但不在AWS服务器上

背景:我有一个系统,这需要在构建Web应用程序的实例如下步骤:

  1. 使用skeleton.sql文件建立数据库的“0版本”。
  2. 运行upgrade.sh脚本,该脚本通过“upgrades”目录查看并...
  3. ...运行每个升级文件以更改数据库结构(包括将新列添加到已经过宽表),按照正确的顺序。

的问题是,我的本地服务器(WAMP),而在第3步运行脚本之一,我得到试图将更多的列添加到表时错误的:

Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126.

同样,我知道该表在理论上太“宽”,但我不知道我可以运行的任何查询来计算它的宽度。此外,当我运行这个时,我没有在我的RDS服务器上收到这个错误,因为我不知道如何获得表的“宽度”,我不知道如何比较(尽管给定本地主机的VARCHAR已经填充用较少的字符,我期望它不管小)。

我在StackOverflow上阅读的所有内容都表明,无论引擎如何,所有表都具有相同的“宽度”限制。我怀疑这是一个配置问题,但如果这是一个硬限制,为什么它在我的RDS服务器上工作,但不是本地主机?

我唯一的想法是字符代码的差异?你看过吗? (对不起,不能评论太新的用户)。

+0

你是什么意思的字符代码差异?它们都使用'UTF-8',并且skeleton.sql文件来自相同的代码库;它们是相同的。 – Bing

+0

这是我的答案 - UTF8需要比ANSI/ASCII更多的空间。 – 2012