PHP导入excel到MYSQL列数超过64报错:ERROR 1118 (42000): Row size too large.
2020-04-07 admin php mysql 1512
查询系统在导入excel时,使用了laravel的查询构造器创建数据表:
DB::schema()->create($bm, function($table) use($zdsz){ $table->increments('id');//主键 foreach($zdsz as $value){ $table->string($value)->nullable(); } });
在导入一个列数超过64列的EXCEL表时,发现无法创建表,报错如下 :
Row size too large. The maximum row size for the used table type
原以为是MYSQL数据库列数限制,或者字节数超出,但发现与字节数无关。换csv方式导入,依然报错。仔细看报错内容,总算明白原因了:表的所有字段使用了varchar类型,长度设置过长了。解决方法是,将其改成text,修改之后执行成功了:
DB::schema()->create($bm, function($table) use($zdsz){ $table->increments('id');//主键 foreach($zdsz as $value){ $table->text($value)->nullable(); } });
由于今天才遇到这种列数超多的EXCEL表,一时没认真看报错内容,导致在解决过程中走了弯路。在此记录一下,附laravel导出数据库内容为excel时,数据太大内存超出的解决方法:
//核心函数,