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で別のデータベースから同じテーブルカラムのテーブルにデータを移行した件
などを行った時など、
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の「Database: Migrations」ドキュメント
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行のサイズを小さくする。
これを実施すると、
うまく処理が通るようになった。
スキルを使って、就職/転職/副業する時のサイト
プログラミングのスキルなどを、自分なりに高めた上で、
自分のスキルをアピールして就職や転職を行い、年収をあげるか、
副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。
まずはできる範囲で取り組むことで、
少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。