2017-11-04 4 views
0

私は650の列と1つの行を持つMySQLテーブルを持っています。 私はこれが悪いデザインの(私が継承したもの)であり、それは単純な2列のレイアウトに移されますが、現時点で私はそれを理解するために別の問題を診断しようとしています。 私が現在直面しているシステム構成の問題を隠す場合、設計上の問題を修正したくありません。AWSサーバーではなく、ローカルホストでMySQLの列幅制限に実行

背景:

  1. データベースの「バージョン0」を構築するためにskeleton.sqlファイルを使用します。私は、Webアプリケーションのインスタンスを構築する上で、以下のステップを取るシステムを持っています。
  2. "upgrades"ディレクトリを調べるupgrade.shスクリプトを実行し、...
  3. ...これらのアップグレードファイルをそれぞれ実行して、データベース構造を変更しますテーブル)を適切な順序で使用します。

問題は、ステップ3でのスクリプトのいずれかを実行しながら、そのテーブルに複数の列を追加しようとしたとき、私はエラーを取得しています私はlocalhostサーバ(WAMP)に、次のとおりです。

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

また、私はテーブルが理論的には "ワイド"すぎることは知っていますが、どれだけ広いか計算するために実行できるクエリはわかりません。さらに、私はこれを実行すると私のRDSサーバーでこのエラーが発生していないので、私はテーブルの "幅"を取得する方法がわからないので、比較する方法はわかりません(指定されたlocalhostのVARCHARにはFEWER文字では、それに関係なく、もっと小さくなると思います)。

私がStackOverflowで読んでいるものはすべて、エンジンに関係なくすべてのテーブルの「幅」の制限が同じです。私はそれが構成上の問題だと思うが、これがハードな制限であれば、なぜローカルホストではなく自分のRDSサーバーで動作しているのですか?

答えて

0

私の考えは文字コードが違いましたか?それを調べましたか? (ごめんなさい、新しいユーザーにはコメントできません)。

+0

文字コードの違いはどういう意味ですか?それらは両方とも 'UTF-8'を使用していて、skeleton.sqlファイルは同じコードリポジトリからのものです。彼らは同じです。 – Bing

+0

それは私の答えでした - UTF8はANSI/ASCIIより多くのスペースを必要とします。 – 2012

関連する問題