PDA

View Full Version : مشکل عجیب با کلید خارجی در mysql



mostafa8266
سه شنبه 09 تیر 1388, 11:47 صبح
سلام
من این سوال رو تو انجمن mysql پرسیدم ولی کسی جواب نداد،گفتم شاید اینجا کسی بتونه کمکم کنه.
من رو سیستمم wamp 2.0h (apache 2.2.11,php 5.2.9-2,mysql 5.1.33) نصب کردم.یه دیتابیس می سازم و از console کد sql بش می دم ولی انگار نه انگار تو کد کلید خارجی بوده (از طریق phpmyadmin هم جایی نداره که کلید خارجی تعریف کنم البته تو ورژن قبلی داشت).مثلا:

create table Paper(
Code int unsigned not null primary key auto_increment,
Title text not null,
Abstract text,
Keywords text,
Comments text,
JournalID tinyint unsigned not null,
MemberID int unsigned not null,
foreign key (JournalID)references Journal(ID) ON UPDATE CASCADE ON DELETE CASCADE,
foreign key (MemberID) references Member(ID) ON UPDATE CASCADE ON DELETE CASCADE
);قبلا با ورژن قبلی wampمشکلی نداشتم.(البته رو سرور نسخه ای نصبه که من باش مشکل دارم)،وقتی دستور show create table paper رو میزنم تو جواب به جای کلید خارجی key 'MemberID' ('MemberID')قرار گرفته.
اگه دوستان لطف کنن و جواب من و سریع بدن ممنون میشم(آخه سایت تا سه روز دیگه باید up شه)

sepehrmm
چهارشنبه 10 تیر 1388, 16:57 عصر
فقط یک انجین (engine) در mysql از foreign key ساپورت میکنه که اونم InnoDB یه !
شاید انجین دیتابیست چیزه دیگه ای یه نگاه بنداز اگه نبود تنظیمش کن روی InnoDB

sepehrmm
چهارشنبه 10 تیر 1388, 16:58 عصر
اینم دستورش :

mysql> use database
mysql> CREATE TABLE test (a INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (a), KEY(b))
-> ENGINE=MyISAM;

mostafa8266
چهارشنبه 10 تیر 1388, 20:27 عصر
ممنون،مشکل از engine بود

hasti9176
سه شنبه 31 فروردین 1389, 11:07 صبح
سلام
من type هر جدول رو بعد از ساخت InnoDb گذاشتم ، آیا منظورتون همینه از تغییر انجین؟ اگه نه که به چه صورت انجام بدم؟

و بعد اینکه انجین رو innoDB گذاشتیم، توضیح بدید چجوری با خود phpmyadmin کلید خارجی رو مشخص کنیم

در قسمت designer ؟