SQLSTATE [23000]: внешний ключ - PullRequest
       8

SQLSTATE [23000]: внешний ключ

0 голосов
/ 26 февраля 2020

Привет, я все еще получаю эту ошибку, но все выглядит хорошо, и миграции работают правильно.

SQLSTATE [23000]: нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ошибка ограничения внешнего ключа (fakturytable. fakturas, CONSTRAINT fakturas_id_sprzedawcy_foreign FOREIGN KEY (id_sprzedawcy) ССЫЛКИ sprzedawcas (id) НА УДАЛЕННЫЙ КАСКАД) (SQL: вставить в fakturas (typ_faktury, data_wystawienia, mejsce_wystawienia, data_sprzedazy, towar_usluga, jm, ilosc, cena_netto, watosc_netto, stawka_vat, kwota_vat, wartosc_brutto, status, sposob_platnosci, numer_konta, termin_platnosci) (fsturaVAT, 2020.10.14, Минск Мазовецкий , 2020.10.26, porty, jan, 10, 23456, 421124, 1234, 207, 1107, nieaplacona, qwrq, 12345678901234567890098321, 2020.10.28))

миграция факторов:

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

class CreateFakturasTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('fakturas', function(Blueprint $table){      
            $table->increments('id');
            $table->unsignedinteger('id_sprzedawcy');
            $table->unsignedinteger('id_nabywcy');
            $table->string('typ_faktury');
            $table->date('data_wystawienia');
            $table->string('mejsce_wystawienia');
            $table->date('data_sprzedazy');
            $table->string('towar_usluga');
            $table->string('jm');
            $table->bigInteger('ilosc');
            $table->bigInteger('cena_netto');
            $table->bigInteger('watosc_netto');
            $table->bigInteger('stawka_vat');
            $table->bigInteger('kwota_vat');
            $table->bigInteger('wartosc_brutto');
            $table->string('status');
            $table->string('sposob_platnosci');
            $table->string('numer_konta');
            $table->date('termin_platnosci');


        });
        Schema::table('fakturas',function($table){
            $table->foreign('id_sprzedawcy')
            ->references('id')->on('sprzedawcas')
            ->onDelete('cascade');
        $table->foreign('id_nabywcy')
            ->references('id')->on('nabywcas')
            ->onDelete('cascade');
        });

    }
    public function down()
    {

       Schema::dropIfExists('fakturas');
       Schema::enableForeignKeyConstraints();
    }
}

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Вы не указали значение id_sprzedawcy (это должен быть идентификатор, существующий в таблице sprzedawcas) при вставке. либо предоставьте его в операторе создания, либо сделайте его обнуляемым при миграции:

$table->unsignedinteger('id_sprzedawcy')->nullable();

То же самое относится и к любым другим имеющимся у вас внешним ключам.

0 голосов
/ 26 февраля 2020

Ваша вставка неверна.

insert into fakturas (typ_faktury, data_wystawienia, mejsce_wystawienia, data_sprzedazy, towar_usluga, jm, ilosc, cena_netto, watosc_netto, stawka_vat, kwota_vat, wartosc_brutto, status, sposob_platnosci, numer_konta, termin_platnosci) values (fsturaVAT, 2020.10.14, Minsk Mazowiecki, 2020.10.26, porty, jan, 10, 23456, 421124, 1234, 207, 1107, nieaplacona, qwrq, 12345678901234567890098321, 2020.10.28))

не ссылается на id_sprzedawcy, что вы указали при переносе. (внешний ключ).

Необходимо указать действительный id_sprzedawcy во вставке или удалить ограничение внешнего ключа.

...