LaravelのMySQLでテーブル作成時に「Syntax error or access violation: 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535.」のエラー発生

MySQLのデータベース移行など、

例えば、

などを行った時など、

Laravelのマイグレーションなどにおいて、

問題が起きることがあります。

そんな中で、

Syntax error or access violation: 1118 Row size too large.
The maximum row size for the used table type, not counting BLOBs, is 65535.

というエラーが起きることがあったので、

その時の対応内容などをメモ。

Laravelのマイグレーションの公式ドキュメント

まずは関連する公式ドキュメント。

何かあればこちらのLaravelのドキュメントを参照してもらうと、

各バージョンに沿った情報も載っているので、

最初に確認していくと良いですね。

LaravelのMySQLで使用したバージョン確認

mysqlのコマンドラインで確認

mysql -V

実行結果

$  mysql -V
mysql  Ver 8.0.31-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

LaravelのMySQL実行内容とエラー

Laravelでマイグレーションを実施。

その際、以下のエラーが発生。

SQLSTATE[42000]: Syntax error or access violation: 
1118 Row size too large. 
The maximum row size for the used table type, 
not counting BLOBs, is 65535.
This includes storage overhead, 
check the manual. 
You have to change some columns to TEXT or BLOBs (SQL:
 :

こちらのエラーが発生して、

大きなエラー内容としては、

The maximum row size for the used table type

というところで、

1つのテーブルに対して、

1行のデータレコードのデータのサイズが大きすぎることが原因。

今回は、いろいろとたくさんのデータを、

テーブルを正規化せずにテストデータ作ろうとしたことが問題だった。

LaravelのMySQLエラー対応

エラー対応としては、

  • テーブルを正規化してカラム数を減らす
  • カラムの型をStringなどの大きなサイズは小さくする

などを対応して、

1つのテーブルの1行のサイズを小さくする。

これを実施すると、

うまく処理が通るようになった。

スキルを使って、就職/転職/副業する時のサイト

プログラミングのスキルなどを、自分なりに高めた上で、

自分のスキルをアピールして就職や転職を行い、年収をあげるか、

副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。

まずはできる範囲で取り組むことで、

少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。

おすすめ書籍

広告

おすすめ記事