首页 > 解决方案 > 语法错误或访问冲突:1118 行大小太大

问题描述

我必须帮助一些朋友在 Laravel 中开发应用程序(即使我从未使用过 PHP 和 Laravel),而且我刚刚克隆了他们的 repo。

当我运行迁移时,我收到此错误:

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")

我刚刚在谷歌上搜索过,人们告诉我我的一些字段太大了,比如 varchars,但它们不是(或者我不认为它们是)

这是我的迁移文件:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateStudentsTable extends Migration
{
    public function up()
    {
        Schema::create('students', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('nume')->nullable()->default(NULL);
            $table->string('initiale')->nullable()->default(NULL);
            $table->string('prenume')->nullable()->default(NULL);
            $table->year('an_inmatriculare')->nullable()->default(NULL);
            $table->integer('an_studiu')->nullable()->default(NULL);

            $table->string('data_nastere')->nullable()->default(NULL);
            //check this
            $table->integer('tip_act_identitate_id')->nullable()->default(NULL);
            $table->string('cnp')->nullable()->default(NULL);
            $table->string('numar_serie')->nullable()->default(NULL);
            $table->string('telefon')->nullable()->default(NULL);

            $table->string('email')->unique()->nullable()->default(NULL);
            $table->string('password');
            $table->rememberToken();

            $table->string('web')->nullable()->default(NULL);
            $table->string('prenume_tata')->nullable()->default(NULL);
            $table->string('prenume_mama')->nullable()->default(NULL);
            $table->string('nume_casatorie')->nullable()->default(NULL);
            $table->string('titlu_teza')->nullable()->default(NULL);


            $table->text('comisie')->nullable()->default(NULL);
            $table->text('adresa')->nullable()->default(NULL);
            $table->integer('tip_cetatenie_id')->nullable()->default(NULL);
            $table->integer('a_doua_cetatenie_id')->nullable()->default(NULL);
            $table->string('sex')->nullable()->default(NULL);
            $table->integer('tip_banca_id')->nullable()->default(NULL);
            $table->string('cont_banca')->nullable()->default(NULL);
            $table->integer('venit_pe_familie')->nullable()->default(NULL);
            $table->string('alte_venituri')->nullable()->default(NULL);
            $table->string('nume_liceu_absolvit')->nullable()->default(NULL);
            $table->float('nota_bacalaureat')->nullable()->default(NULL);
            $table->integer('localitate_domiciliu_id')->nullable()->default(NULL);
            $table->integer('judet_domiciliu_id')->nullable()->default(NULL);
            $table->integer('judet_nastere_id')->nullable()->default(NULL);
            $table->integer('localitate_nastere_id')->nullable()->default(NULL);
            $table->integer('orfan_de_un_parinte')->nullable()->default(NULL);
            $table->string('numar_matricol')->nullable()->default(NULL);
            $table->string('tip_act_identitate')->nullable()->default(NULL);
            $table->string('numar_legitimatie')->nullable()->default(NULL);

            $table->string('utilizator_id')->nullable()->default(NULL);
            $table->string('status')->nullable()->default(NULL);
            $table->string('dmy_facultate')->nullable()->default(NULL);
            $table->string('dmy_domeniu')->nullable()->default(NULL);
            $table->string('dmy_grupa')->nullable()->default(NULL);
            $table->string('dmy_taxa')->nullable()->default(NULL);
            $table->string('dmy_anstudiu')->nullable()->default(NULL);
            $table->string('dmy_anuniv')->nullable()->default(NULL);
            $table->integer('dmy_org_unit_id_pk')->nullable()->default(NULL);
            //
            $table->integer('portal_id')->nullable()->default(NULL);
            $table->integer('moodle_user_id')->nullable()->default(NULL);
            $table->string('moodle_id_number')->nullable()->default(NULL);
            $table->string('moodle_username')->nullable()->default(NULL);
            $table->integer('user_id')->nullable()->default(NULL);
            $table->string('parola_initiala')->nullable()->default(NULL);
            //
            $table->string('observatii_student')->nullable()->default(NULL);
            $table->integer('candidat_facultate_admitere_id')->nullable()->default(NULL);
            $table->float('medie_admitere')->nullable()->default(NULL);
            $table->string('an_emitere_diploma_facultate')->nullable()->default(NULL);
            $table->string('profil_liceu')->nullable()->default(NULL);
            $table->string('serie_diploma_facultate')->nullable()->default(NULL);
            $table->string('numar_diploma_facultate')->nullable()->default(NULL);
            $table->string('forma_finantare_facultare')->nullable()->default(NULL);
            $table->string('an_absolvire_master')->nullable()->default(NULL);
            $table->string('durata_studii_facultate_master')->nullable()->default(NULL);
            $table->string('an_emitere_diploma_master')->nullable()->default(NULL);
            $table->string('program_specializare_facultate_master')->nullable()->default(NULL);
            $table->string('forma_finantate_facultate_master')->nullable()->default(NULL);
            $table->string('nr_ani_bugetati_master')->nullable()->default(NULL);
            $table->string('strada_domiciliu')->nullable()->default(NULL);
            $table->string('nr_strada_domiciliu')->nullable()->default(NULL);
            $table->string('bloc_domiciliu')->nullable()->default(NULL);
            $table->string('apartament_domiciliu')->nullable()->default(NULL);
            $table->string('cod_postal_domiciliu')->nullable()->default(NULL);
            $table->string('program_specializare_facultate')->nullable()->default(NULL);
            $table->string('nr_diploma_facultate_master')->nullable()->default(NULL);

            $table->boolean('persoana_cu_dizabilitati')->default(0);

            $table->integer('tara_liceu_id')->nullable()->default(NULL);
            $table->integer('tara_domiciliu_id')->nullable()->default(NULL);
            $table->integer('durata_studii_facultate')->nullable()->default(NULL);
            $table->integer('facultate_absolvita_id')->nullable()->default(NULL);
            $table->integer('nr_ani_bugetati_licenta')->nullable()->default(NULL);
            $table->integer('tara_facultate_master_id')->nullable()->default(NULL);
            $table->integer('judet_facultate_master_id')->nullable()->default(NULL);
            $table->integer('localitate_facultate_master_id')->nullable()->default(NULL);
            $table->integer('universitate_master_id')->nullable()->default(NULL);
            $table->integer('tara_nastere_id')->nullable()->default(NULL);

            $table->integer('liceu_absolvit_id')->nullable()->default(NULL);
            $table->integer('localitate_liceu_absolvit_id')->nullable()->default(NULL);
            $table->integer('judet_liceu_absolvit_id')->nullable()->default(NULL);
            $table->string('an_absolvire_liceu')->nullable()->default(NULL);
            $table->string('forma_inv_liceu_absolvit')->nullable()->default(NULL);
            $table->string('act_identitate_serie')->nullable()->default(NULL);
            $table->string('act_identitate_numar')->nullable()->default(NULL);
            $table->string('eliberat_de')->nullable()->default(NULL);
            $table->string('eliberat_data')->nullable()->default(NULL);
            $table->string('etnia')->nullable()->default(NULL);
            $table->string('valabilitate_pana_la')->nullable()->default(NULL);
            $table->integer('erasmus')->nullable()->default(NULL);
            $table->integer('localitate_populatie_mica')->nullable()->default(NULL);
            $table->integer('urban')->nullable()->default(NULL);
            $table->integer('rural')->nullable()->default(NULL);
            $table->integer('maturi')->nullable()->default(NULL);
            $table->string('studii_liceu_id_forma_invatamant')->nullable()->default(NULL);
            $table->string('date_diploma_seria')->nullable()->default(NULL);
            $table->string('numar_diploma_bac')->nullable()->default(NULL);
            $table->string('date_diploma_anul')->nullable()->default(NULL);
            $table->string('alte_observatii')->nullable()->default(NULL);
            $table->string('date_diploma_emitent_id')->nullable()->default(NULL);
            $table->string('stare_sociala_speciala_id')->nullable()->default(NULL);
            $table->integer('judet_facultate_absolvita_id')->nullable()->default(NULL);
            $table->integer('tara_facultate_absolvita_id')->nullable()->default(NULL);
            $table->string('localitate_facultate_absolvita_id')->nullable()->default(NULL);
            $table->string('forma_invatamant_facultate_absolvita')->nullable()->default(NULL);
            $table->integer('universitate_absolvita_id')->nullable()->default(NULL);
            $table->string('an_absolvire_facultate')->nullable()->default(NULL);
            $table->string('situatie_medicala_speciala_id')->nullable()->default(NULL);
            $table->integer('n_liceu_id')->nullable()->default(NULL);
            $table->integer('date_diploma_localitate_emitent_id')->nullable()->default(NULL);
            $table->integer('date_diploma_judet_emitent_id')->nullable()->default(NULL);
            $table->string('sn_pasaport_strain')->nullable()->default(NULL);
            $table->string('denumire_liceu_absolvit_strain')->nullable()->default(NULL);
            $table->string('specializare_liceu_absolvit_strain')->nullable()->default(NULL);
            $table->string('date_diploma_localitate_strainatate')->nullable()->default(NULL);
            $table->string('an_sesiune_bac')->nullable()->default(NULL);
            $table->string('localitate_liceu_absolvit_strain')->nullable()->default(NULL);
            $table->integer('studii_liceu_id_n_specializare')->nullable()->default(NULL);
            $table->integer('are_cnp')->nullable()->default(NULL);
            $table->integer('student_strain')->nullable()->default(NULL);
            $table->string('adresa_numar')->nullable()->default(NULL);
            $table->string('localitate_nastere_strainatate')->nullable()->default(NULL);
            $table->string('localitate_domiciliu_strainatate')->nullable()->default(NULL);
            $table->string('liceu_institutie')->nullable()->default(NULL);
            $table->string('liceu_institutie_eminenta')->nullable()->default(NULL);
            $table->integer('candidat_olimpic')->nullable()->default(NULL);
            $table->integer('admis')->nullable()->default(0);
            $table->integer('respins')->nullable()->default(0);
            $table->integer('conducator_doctorat_id')->nullable()->default(NULL);
            $table->integer('limba_id')->nullable()->default(NULL);
            $table->integer('nationalitate_id')->nullable()->default(NULL);
            $table->integer('forma_invatamant_id')->nullable()->default(NULL);
            $table->integer('forma_admitere_id')->nullable()->default(NULL);
            $table->integer('etnia_id')->nullable()->default(NULL);
            $table->integer('localitate_facultate_id')->nullable()->default(NULL);

            $table->string('nota_disertatie')->nullable()->default('0.00');
            $table->string('medie_licenta')->nullable()->default('0.00');
            $table->string('medie_ani_studiu_licenta')->nullable()->default('0.00');
            $table->string('medie_ani_studiu_master')->nullable()->default('0.00');
            $table->integer('fost_student')->nullable()->default(0);
            $table->integer('absolvent')->nullable()->default(0);
            $table->integer('student_nr_ani_bugetat')->nullable()->default(0);
            $table->integer('absolvent_nr_ani_bugetat')->nullable()->default(0);

            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('students');
    }
}

以下是错误: 点击

我正在使用 Laravel 7 + MySQL。

标签: phpmysqllaravel

解决方案


您必须将您的表格划分为多个表格。并通过关系将其相互连接。你可以使用 Laravel 关系hasOnebelongsTo. 例如:

users
id
username
name

students
id
user_id
cart_number
...

user_address
id
user_id
address
street
...

并将数据类型更改为正确的值


推荐阅读