[ASK]Error Foreign Key

mau nanya nih gan,

kalo error kyk gini knp yah?

[color="#FF0000"]

CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (alumni2/al_aktifitas_alumni, CONSTRAINT fk_aktifitas_alumni_1 FOREIGN KEY (idaktifitas) REFERENCES al_aktifitas (idaktifitas) ON DELETE NO ACTION ON UPDATE CASCADE)[/color]

function relation di model biodata.php


        public function relations()

        {

                // NOTE: you may need to adjust the relation name and the related

                // class name for the relations automatically generated below.

                return array(

                        'aktifitasAlumnis' => array(self::HAS_MANY, 'AktifitasAlumni', 'idalumni'),

                        'aktifitas' => array(self::MANY_MANY, 'Aktifitas', 'idaktifitas'),

                        'idprogram_studi'=>array(self::BELONGS_TO,'program_studi','idprogram'),

                );

        }



maklum newbie bgt :)

Keliatannya sih gagal delete record di tabel yang terelasi ama dia, gan. Soalnya untuk reference option delete-nya diset ‘NO ACTION’. Klo ga salah di MySQL ‘NO ACTION’ artinya jadi ‘RESTRICT’

(http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html).

Solusinya mungkin di option buat ON DELETE-nya dibikin jadi ‘CASCADE’ juga ato ‘SET NULL’. Tapi itu tergantung keinginan agan juga sih hasilnya mo kaya gimana … :)

kurang yakin sih, tapi mungkin parameter foreignkey untuk relasi ‘aktifitas’-nya ada yang kurang.

coba dengan ini:




...

'aktifitas' => array(self::MANY_MANY, 'Aktifitas', 'AktifitasAlumni(idalumni,idaktifitas)'),

...

soalnya dalam relasi many_many, biasanya diperlukan sebuah tabel yang memiliki field yang terhubung sebagai ForeignKey (FK) ke masing-masing tabel.

misal:

[biodata] 1—m [AktifitasAlumni] m–1 [aktifitas]

  • idAlumni (PK) - idAlumni (FK) - idAktifitas {PK}

                     		- idAktifitas {FK}

gan mending gak usah pake innodb gan… myisam saja deh… saya sudha 4 bulan meningglkan innoDB and im a happy person hehehe… (IMHO)

setuju gan, myISAM lbh jarang error pas di export import ^^ (pengalaman lama sih … hehehe).

kalo bedanya sih kurang jelas ane … kurang makan bangku sekolahan plajaran inno sama isam ane neh gan … hehehehe.

kemungkinan besar sih ada 2 (menurut ane)

  1. dbTypenya di set NOT NULL … tapi pas di insert tidak ada valuenya.

  2. dbTypenya di set NOT NULL PRIMARY KEY … tapi pas di insert valuenya sudah ada ada value yg sama sebelumnya (redundant)

kalo mo yakin mendingan di check dulu sebelum insert … pake print_r($varnyaApa);

^^