2

私は Django と MySQL にアプリケーションを持っています。モデルには TextField として指定されたいくつかのフィールドがあります。syncdb を実行すると、モデルのテーブルが作成され、指定された列が longtext データ型で作成されます。

しかし、テーブルに情報を入力しようとすると、次のエラーが表示されます

DatabaseError: (1118、「行サイズが大きすぎます。BLOB をカウントしない、使用されるテーブル タイプの最大行サイズは 8126 です。一部の列を TEXT または BLOB に変更する必要があります」)

列の種類を Text と Blob に変更しましたが、問題は解決しませんでした。

このエラーについて読んだことがありますが、これは行ごとに 8126 バイトを超える収入情報が原因です。そのため、MySQL の構成を変更して、Antepode の代わりにファイル タイプ Barracuda で動作するようにしました。Antepode では、別のファイルに送信する情報を圧縮することができます。

しかし、これは問題を解決しませんでした。MySQL のドキュメント ( https://dev.mysql.com/doc/refman/5.5/en/innodb-compression-usage.html ) ではROW_FORMAT = COMPRESSED、テーブルですが、これは syncdb によって行われます。

syncdb がテーブルを作成するときにこれらの設定を指定する方法はありますか、または syncdb を使用せずにテーブルを手動で作成する必要がありますか?

私のアプリケーションでは、複数のシートとレポートを保存する必要があります。ドキュメントのセクションごとに表に列を定義しました。

4

1 に答える 1

1

innodbを使用してMySQLにビッグデータ行を追加するエラーを解決しました

DatabaseError: (1118、「行サイズが大きすぎます。BLOB をカウントしない、使用されるテーブル タイプの最大行サイズは 8126 です。一部の列を TEXT または BLOB に変更する必要があります」)

まず、ファイル形式を Barracuda に設定し、MySQL でテーブル グローバル変数ごとに 1 つのファイルを有効にする必要があります。

SET GLOBAL innodb_file_format = バラクーダ;
SET GLOBAL innodb_file_format_check = ON; SET GLOBAL innodb_format_max = バラクーダ; SET GLOBAL innodb_file_per_table = ON;

クエリには phpmyadmin を使用しました。

次に、syncdb を実行した後、大きな行に問題があるテーブルに移動し、[操作] -> [テーブル オプション] タブに移動して、'ROW_FORMAT' を 'COMPRESS' に変更します。

これがお役に立てば幸いです

于 2012-12-04T19:34:31.497 に答える