mysql विदेशी कुंजी बाधा गलत रूप से बनाई गई त्रुटि है


173

मैं दो तालिकाओं है, table1एक स्तंभ के साथ माता-पिता तालिका है IDऔर table2एक स्तंभ के साथ IDFromTable1(न कि वास्तविक नाम) जब मैं पर एक FK डाल IDFromTable1करने IDमें table1मैं त्रुटि मिलती है Foreign key constraint is incorrectly formed error। अगर table1रिकॉर्ड डिलीट हो जाता है तो मैं टेबल 2 रिकॉर्ड हटाना चाहता हूं । किसी भी मदद के लिए धन्यवाद

ALTER TABLE `table2`  
   ADD CONSTRAINT `FK1` 
      FOREIGN KEY (`IDFromTable1`) REFERENCES `table1` (`ID`) 
      ON UPDATE CASCADE 
      ON DELETE CASCADE;

यदि कोई अन्य जानकारी चाहिए तो मुझे बताएं। मैं mysql में नया हूँ


4
आप अपनी मेज के लिए किस इंजन का उपयोग कर रहे हैं? का प्रकार क्या है table2.IDFromTable1और table1.ID?
रोमेन

5
इसके अलावा, जांच लें कि दोनों तालिकाओं के लिए वर्ण सेट समान हैं।
कार्स्टन

दोनों टेबल इंजन innoDB हैं। निश्चित नहीं है कि चरित्र सेट कहां मिलेंगे, और क्या दोनों चार प्रकार के हैं।
ID1

2
कृपया तालिका 1 और तालिका 2 के लिए तालिका परिभाषा प्रदान करें। आपको यह त्रुटि कैसे मिली? क्या आप विदेशी कुंजी बनाने के लिए एक उपकरण का उपयोग करते हैं? ऐसा लगता है कि यह एक MySQL देशी त्रुटि नहीं है।
देवर्त

@ user516883 - क्या आपको टेबल परिभाषाएँ प्राप्त करने के लिए सहायता की आवश्यकता है? HeidiSQL में आप केवल क्रिएट कोड टैब पर क्लिक कर सकते हैं ।
अल्वारो गोंजालेज

जवाबों:


422

मैं HeidiSQL के साथ इसी समस्या में भाग गया। आपको प्राप्त त्रुटि बहुत गूढ़ है। मेरी समस्या समाप्त हो रही है कि विदेशी कुंजी स्तंभ और संदर्भित स्तंभ एक ही प्रकार या लंबाई के नहीं थे।

विदेशी कुंजी स्तंभ था SMALLINT(5) UNSIGNEDऔर संदर्भित स्तंभ था INT(10) UNSIGNED। एक बार जब मैंने उन दोनों को एक ही सटीक प्रकार बनाया, तो विदेशी कुंजी निर्माण ने पूरी तरह से काम किया।


58
या हो सकता है कि संदर्भित स्तंभ एक प्राथमिक कुंजी नहीं है
nawfal

9
मेरे लिए Kinda समान समस्या - संदर्भित तालिका अभी तक मौजूद नहीं थी। ओह।
अमलगोविनस

5
मैंने पूरी तरह से अनुभव किया है कि जेक ने क्या किया है, लेकिन मैं HeidiSQL पर एक और FK मुद्दे (अलग प्रकार) में भाग गया हूं। Varchars पर FK का समान समतलीकरण होना आवश्यक है। आशा है कि भविष्य में किसी और की मदद करता है!
cbloss793

10
मेरे मामले में यह अलग एनकोडिंग और कोलाजेशन के कारण था।
खत्री

1
@nawfal - मेरा मानना ​​है कि यह एक प्राथमिक कुंजी होना जरूरी नहीं है, लेकिन यह एक सूचकांक होना चाहिए। प्राथमिक कुंजी स्वचालित रूप से अनुक्रमित हो जाती है।
इटई

48

मुझे एक ही समस्या थी जब MyISAMइंजन का उपयोग करके मूल तालिका बनाई गई थी । यह एक मूर्खतापूर्ण गलती है, जिसे मैंने तय किया है:

ALTER TABLE parent_table ENGINE=InnoDB;

बहुत बहुत धन्यवाद, मैं इस के साथ पागल हो रहा था। किसी भी विचार क्यों डेटाबेस अचानक तालिकाओं के लिए इंजन स्विच करेगा?
रॉबर्ट फ्रैंकलिन

28

सुनिश्चित करें कि कॉलम समान (एक ही प्रकार के) हैं और यदि संदर्भ कॉलम नहीं है primary_key, तो सुनिश्चित करें कि यह है INDEXED


यह मेरे साथ भी हुआ था, इसमें कोई त्रुटि नहीं थी, लेकिन विदेशी कुंजी नहीं जोड़ी गई थी (1 था और 1 वास्तव में नहीं था), लेकिन दोनों विदेशी कुंजी परिभाषा को सरल रूप KEY referencing_column(referencing_column) से जोड़ने के बाद वे दोनों सफल जोड़े गए थे :)
jave.web

2
अनुक्रमित नहीं की जा रही कुंजी मेरा मुद्दा था।
नील मास्टर्स

1
मेरे पास यह मुद्दा था और समस्या यह थी कि मेरे पास एक दोहरी कॉलम प्राथमिक कुंजी थी और आप प्राथमिक कुंजी के 2 वें कॉलम का उपयोग विदेशी कुंजी के रूप में नहीं कर सकते। इसलिए मैंने प्राथमिक कुंजी के दूसरे कॉलम के लिए सिर्फ अपना इंडेक्स जोड़ा और फिर यह काम किया।
फिरोज

21

विदेशी कुंजियों को परिभाषित करने के लिए सिंटैक्स बहुत क्षमा करने योग्य है, लेकिन किसी और के लिए इस पर ट्रिपिंग, तथ्य यह है कि विदेशी कुंजी "एक ही प्रकार की" होनी चाहिए, यहां तक ​​कि टकराने पर भी लागू होती है, न कि केवल डेटा प्रकार और लंबाई और बिट हस्ताक्षर।

ऐसा नहीं है कि आप अपने मॉडल में टकराव को मिलाएंगे (आप करेंगे?) लेकिन यदि आप करते हैं, तो सुनिश्चित करें कि आपके प्राथमिक और विदेशी कुंजी फ़ील्ड phpmyadmin या Heidi SQL या जो भी आप उपयोग करते हैं, उसी टकराव प्रकार के हैं।

आशा है कि यह आपको चार घंटे के परीक्षण और त्रुटि से बचाता है।


1
धन्यवाद! मेरा ऑनलाइन होस्ट ISAM इंजन का उपयोग करता है और स्थानीय देव के लिए मैं InnoDB का उपयोग करता हूं। जब मैंने होस्ट से लोकल ... बूम तक एक टेबल का समर्थन किया।
बेन

मारियाबीडी के हालिया संस्करण utf8_mb4 को डिफ़ॉल्ट चारसेट के रूप में उपयोग करना प्रतीत होता है (जब सर्वर कॉन्फ़िगरेशन में स्पष्ट रूप से सेट नहीं होता है) तो COLLATE utf8mb4_unicode_ciमेरी (अप्रत्याशित) समस्या (देव मशीन पर) थी।
जॉनीजेड

13

मुझे भी यही समस्या थी, लेकिन इसे हल किया।

बस सुनिश्चित करें कि 'table1' में कॉलम 'ID' का UNIQUE इंडेक्स है!

और निश्चित रूप से, इन दोनों तालिकाओं में कॉलम 'आईडी' और 'IDFromTable1' की लंबाई समान होनी चाहिए। लेकिन आप इस बारे में पहले से ही जानते हैं।


आपने मेरा दिन बना दिया।
कीवेनोलो

1
मदद करने में खुशी! ;)
रेनाट गटिन

विवरण की अनिश्चितता, लेकिन मेरे पास इस त्रुटि के साथ एक समग्र कुंजी थी जो स्तंभों के लिए अलग-अलग अद्वितीय अनुक्रमों को जोड़कर तय की गई थी।
हलवर होल्स्टेन स्ट्रैंड

संदर्भित कॉलम को अनुक्रमित किया जाना है, यह अद्वितीय नहीं है (हालांकि यह सामान्य मामला है)।
बरमार

10

बस पूरा करने के लिए।

यह त्रुटि तब भी हो सकती है जब आपके पास VARCHAR (..) के साथ एक विदेशी कुंजी हो और संदर्भित तालिका की वर्णमाला इसे संदर्भित तालिका से अलग हो।

जैसे एक लैटिन तालिका में VARCHAR (50) UTF8 तालिका में VARCHAR (50) से अलग है।


1
यहां तक ​​कि utf8_unicode_ci और utf8_general_ci त्रुटि पैदा कर रहे हैं
leuchtdiode

10

mysql त्रुटि पाठ इतनी मदद नहीं करता है, मेरे मामले में, कॉलम में "अशक्त नहीं" बाधा थी, इसलिए "हटाए गए सेट अशक्त" की अनुमति नहीं थी


7

अगर सब कुछ ठीक है, तो बस ->unsigned();के अंत में जोड़ें foregin key

अगर यह काम नहीं करता है, तो दोनों क्षेत्रों के डेटाटाइप की जांच करें। वे एक ही होना चाहिए।


5

मेरे पास एक ही मुद्दा था, दोनों कॉलम INT (11) NOT NULL थे लेकिन मैं विदेशी कुंजी बनाने में सक्षम नहीं था। मुझे इसे सफलतापूर्वक चलाने के लिए विदेशी कुंजियों की जाँच को अक्षम करना पड़ा:

SET FOREIGN_KEY_CHECKS=OFF;
ALTER TABLE ... ADD CONSTRAINT ...
SET FOREIGN_KEY_CHECKS=ON;

आशा है कि यह किसी की मदद करता है।


4
वास्तव में यह
बजे

यह मैं आगे पारित करने के लिए है, लेकिन मेरी समस्या कॉलम में primmary इंडेक्स लापता था मदद किया था
Bumerang

4

इस त्रुटि के प्रदर्शन के लिए एक और संभावित कारण। जिस क्रम में मैं टेबल बना रहा था वह गलत था। मैं एक मेज से एक कुंजी को संदर्भित करने की कोशिश कर रहा था जो अभी तक नहीं बनाई गई थी।


4

(अंतिम आक्रोश) भले ही क्षेत्र का नाम और डेटा प्रकार एक ही है, लेकिन टकराव समान नहीं है, यह भी उस समस्या का परिणाम होगा।

उदाहरण के लिए

    TBL NAME | DATA TYPE | COLLATION        

    गतिविधिआईडी | INT |         latin1_general_ci ActivID     | INT |         utf8_general_ci

इसे बदलने का प्रयास करें

    TBL NAME | DATA TYPE | COLLATION        

    गतिविधिआईडी | INT |         latin1_general_ci ActivID     | INT |         latin1_general_ci

....

इसने मेरे लिए काम किया।


3

तालिकाओं के इंजन की जाँच करें, दोनों तालिकाओं को एक ही इंजन होना चाहिए, इससे मुझे बहुत मदद मिली।


अच्छी बात! मैं MySQL में एक ज़ेन कार्ट डेटाबेस के साथ काम कर रहा हूँ जिसकी तालिकाएँ डिफ़ॉल्ट रूप से MyISAM इंजन में हैं। मैंने InnoDB इंजन का उपयोग करते हुए एक तालिका जोड़ी, और अपनी तालिका से कोर ज़ेन कार्ट एक में एक विदेशी कुंजी बाधा जोड़ने की कोशिश की। यह इस अस्पष्ट 'गलत तरीके से गठित' त्रुटि के साथ विफल रहा। आप प्रत्येक तालिका के लिए इंजन को देख सकते हैंSHOW TABLE STATUS LIKE 'table_name';
नेक

2

मुझे भी यही समस्या थी।

समस्या यह है कि संदर्भ स्तंभ प्राथमिक कुंजी नहीं है।

इसे एक प्राथमिक कुंजी बनाएं और समस्या हल हो गई है।


यह एक PK होने की जरूरत नहीं है, यह भी नहीं पूरी तरह से हो सकता है।
फिलिप

वास्तव में ... मेरे मामले में इसे सामान्य रूप से एक इंडेक्स प्रकार पर सेट करना काम किया।
hendr1x

2

हालाँकि अन्य उत्तर काफी मददगार हैं, लेकिन मैं अपने अनुभव को भी साझा करना चाहता था।

मुझे उस समस्या का सामना करना पड़ा जब मैंने एक तालिका को हटा दिया idथा जिसे पहले से ही अन्य तालिकाओं ( डेटा के साथ ) में विदेशी कुंजी के रूप में संदर्भित किया जा रहा था और कुछ अतिरिक्त स्तंभों के साथ तालिका को फिर से बनाने / आयात करने की कोशिश की।

मनोरंजन के लिए क्वेरी (phpMyAdmin में उत्पन्न) निम्नलिखित की तरह दिखती है:

CREATE TABLE `the_table` (
  `id` int(11) NOT NULL,            /* No PRIMARY KEY index */  
  `name` varchar(255) NOT NULL,
  `name_fa` varchar(255) NOT NULL,
  `name_pa` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

... /* SOME DATA DUMP OPERATION */

ALTER TABLE `the_table`
  ADD PRIMARY KEY (`id`), /* PRIMARY KEY INDEX */
  ADD UNIQUE KEY `uk_acu_donor_name` (`name`);

जैसा कि आप देख सकते हैं, PRIMARY KEYइंडेक्स को निर्माण ( और डेटा डालने ) के बाद सेट किया गया था जो समस्या पैदा कर रहा था।

उपाय

समाधान PRIMARY KEYतालिका परिभाषा क्वेरी पर सूचकांक को जोड़ने के लिए था idजिसके लिए विदेशी कुंजी के रूप में संदर्भित किया जा रहा था, जबकि इसे उस ALTER TABLEहिस्से से भी हटा दिया गया था जहां सूचकांक निर्धारित किए जा रहे थे:

CREATE TABLE `the_table` (
  `id` int(11) NOT NULL PRIMARY KEY,            /* <<== PRIMARY KEY INDEX ON CREATION */  
  `name` varchar(255) NOT NULL,
  `name_fa` varchar(255) NOT NULL,
  `name_pa` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

मेरे लिए इसका काम किया। मैं चिंतित था कि मुझे अपने सॉफ़्टवेयर को फिर से स्थापित करने की आवश्यकता है;)
डेवेलेंस

2

मैं उसके लिए घंटों हार गया!

एक मेज में पीके था utf8दूसरे में था utf8_unicode_ci!


1

निम्नलिखित चलाने की कोशिश करें:

दिखाएँ तालिका जनक बनाएँ

// और जांचें कि क्या दोनों तालिकाओं के लिए प्रकार समान हैं, जैसे myISAM या innoDB, आदि
// इस त्रुटि संदेश के साथ जांच करने के लिए अन्य पहलू: विदेशी के रूप में उपयोग किए जाने वाले कॉलम 
कुंजियों को अनुक्रमित किया जाना चाहिए, वे एक ही प्रकार के होने चाहिए 
(यदि एक प्रकार स्मालिंट का है (5) और दूसरा प्रकार का स्मॉलिंट (6), 
यह काम नहीं करेगा), और, यदि वे पूर्णांक हैं, तो उन्हें अहस्ताक्षरित किया जाना चाहिए।

// या चारसेट के लिए जाँच करें
"character_set_database" जैसे चर दिखाएं;
"collation_database" जैसे चर दिखाएं;

// संपादित: कुछ इस तरह की कोशिश करो
तालिका तालिका 2 को बदल दें
ADD CONSTRAINT fk_IdTable2
विदेश का प्रमुख (Table1_Id)
संदर्भ तालिका 1 (Table1_Id)
अद्यतन के मामले पर 
DELETE CASCADE पर;

9
त्रुटि पर कुछ अधिक जानकारी प्राप्त करने के लिए SHOW इंजन INNODB STATUS को चलाने का प्रयास करें
सुधीर बस्ताकोटि

@SudhirBastakoti - +1! वो मेरे लिए किया गया। विवरण सहायक हैं। समस्या को जल्दी ठीक करने में सक्षम था।
पॉल कार्लटन

1

मैं यही समस्या सिम्फनी 2.8 के साथ था।

मुझे यह पहली बार में नहीं मिला, क्योंकि विदेशी चाबियों की लंबाई आदि के साथ ऐसी कोई समस्या नहीं थी।

अंत में मुझे प्रोजेक्ट फोल्डर में निम्न कार्य करने थे। (एक सर्वर पुनरारंभ मदद नहीं किया!)

app/console doctrine:cache:clear-metadata app/console doctrine:cache:clear-query app/console doctrine:cache:clear-result


1

धन्यवाद एस डोरिन:

"बस पूरा करने के लिए। यह त्रुटि तब भी हो सकती है यदि आपके पास VARCHAR (..) के साथ एक विदेशी कुंजी है और संदर्भित तालिका की वर्णमाला इसे संदर्भित तालिका से अलग है। उदाहरण के लिए, एक लैटिन तालिका में VARCHAR (50)। UTF8 तालिका में VARCHAR (50) से अलग है। "

मैंने इस समस्या को हल किया, तालिका के पात्रों के प्रकार को बदलते हुए। निर्माण में लैटिन 1 है और सही ut8 है।

अगली पंक्ति जोड़ें। DEFAULT CHARACTER SET = utf8;


1

मेरे पास दो टेबलों के बीच एक विदेशी कुंजी जोड़ने के लिए ऑल्टर टेबल का उपयोग करने के मुद्दे थे और जिस चीज ने मुझे मदद की वह यह सुनिश्चित कर रही थी कि प्रत्येक कॉलम जिसे मैं एक विदेशी कुंजी संबंध जोड़ने की कोशिश कर रहा था, अनुक्रमित किया गया था। PHP myAdmin में ऐसा करने के लिए: तालिका पर जाएं और संरचना टैब पर क्लिक करें। स्क्रीनशॉट में दिखाए अनुसार वांछित कॉलम को अनुक्रमित करने के लिए अनुक्रमणिका विकल्प पर क्लिक करें:

यहां छवि विवरण दर्ज करें

एक बार जब मैंने दोनों स्तंभों को अनुक्रमित किया तो मैं अपनी विदेशी कुंजियों के साथ संदर्भ लेने की कोशिश कर रहा था, मैं सफलतापूर्वक परिवर्तन तालिका का उपयोग करने और विदेशी कुंजी संबंध बनाने में सक्षम था। आप देखेंगे कि कॉलम नीचे स्क्रीनशॉट की तरह अनुक्रमित हैं:

यहां छवि विवरण दर्ज करें

ध्यान दें कि दोनों टेबल में zip_code कैसे दिखता है।


1

आपको यह जाँचने की आवश्यकता है कि दोनों इसके सभी गुणों में समान हैं, "Collation" में शामिल हैं


1

मैं HeidiSQL का उपयोग कर रहा था और इस समस्या को हल करने के लिए मुझे संदर्भित तालिका में सभी स्तंभों के साथ एक सूचकांक बनाना था ।

Heidisql तालिका में सूचकांक जोड़ना


Mysql में मेरे लिए समान: InnoDB को विदेशी कुंजियों और संदर्भित कुंजियों पर अनुक्रमित करने की आवश्यकता होती है ताकि विदेशी कुंजी जांच तेज़ हो सकें और टेबल स्कैन की आवश्यकता न हो।
hendr1x

1

मैं अभी इसी मुद्दे में भाग गया। मेरे मामले में, मुझे केवल इतना करना है कि यह सुनिश्चित करना है कि जिस तालिका को मैं विदेशी कुंजी में संदर्भित कर रहा हूं उसे वर्तमान तालिका (पहले कोड में) से पहले बनाया जाना चाहिए। इसलिए यदि आप एक चर (x * 5) का संदर्भ दे रहे हैं, तो सिस्टम को पता होना चाहिए कि x क्या है (x को कोड की पिछली पंक्तियों में घोषित किया जाना चाहिए)। इससे मेरी समस्या हल हो गई, आशा है कि यह किसी और की मदद करेगी।


मैं एक ही समस्या में है MariaDB v10.3.18। हमने पहले MySQL का उपयोग किया और यह चेतावनी दी कि एक गैर-मौजूद तालिका के लिए एक विदेशी कुंजी इंगित की गई है।
मारूतिएम

0

मेरे पास लारवेल 5.1 माइग्रेशन स्कीमा बिल्डर के साथ मारियाडीबी 10.1 के साथ एक ही मुद्दा था।

मुद्दा यह था कि मैंने कॉलम सेट करते समय ( पत्र गायब था) के unignedबजाय टाइप किया था।unsigneds

फिक्सिंग के बाद टाइपो त्रुटि मेरे लिए तय की गई थी।


0

यहां तक ​​कि मैं mysql और liquibase के साथ एक ही मुद्दे में भाग गया। तो यह वही समस्या है: जिस तालिका से आप किसी अन्य तालिका के स्तंभ को संदर्भित करना चाहते हैं, वह डेटाटाइप के मामले में या डेटाटाइप के आकार के मामले में अलग है।

Error appears in below scenario:
Scenario 1:
Table A has column id, type=bigint
Table B column referenced_id type varchar(this column gets the value from the id column of Table A.)
Liquibase changeset for table B:

    <changeset id="XXXXXXXXXXX-1" author="xyz">
            <column name="referenced_id" **type="varchar"**>
        </column>
            </changeset>
    <changeSet id="XXXXXXXXXXX-2" author="xyz">
                <addForeignKeyConstraint constraintName="FK_table_A"
                    referencedTableName="A" **baseColumnNames="referenced_id**"
                    referencedColumnNames="id" baseTableName="B" />
    </changeSet>

Table A changeSet:

    <changeSet id="YYYYYYYYYY" author="xyz">
     <column **name="id"** **type="bigint"** autoIncrement="${autoIncrement}">
                    <constraints primaryKey="true" nullable="false"/>
                </column>
    </changeSet>

Solution: 
correct the type of table B to bigint because the referenced table has type bigint.

Scenrario 2:
The type might be correct but the size might not.
e.g. :
Table B : referenced column type="varchar 50"
Table A : base column type ="varchar 255"

Solution change the size of referenced column to that of base table's column size.

0

जांचें कि आपने उचित मामले में तालिका का नाम निर्दिष्ट किया है (यदि तालिका के नाम आपके डेटाबेस में केस-संवेदी हैं)। मेरे मामले में मुझे बदलना पड़ा

 CONSTRAINT `FK_PURCHASE_customer_id` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`) ON UPDATE CASCADE ON DELETE CASCADE

सेवा

 CONSTRAINT `FK_PURCHASE_customer_id` FOREIGN KEY (`customer_id`) REFERENCES `CUSTOMER` (`id`) ON UPDATE CASCADE ON DELETE CASCADE

में customerपरिवर्तित नोट करें CUSTOMER


0

या आप DBDesigner4 का उपयोग कर सकते हैं जिसमें आपके डेटाबेस को बनाने और FK का उपयोग करके उन्हें जोड़ने के लिए एक ग्राफिकल इंटरफ़ेस है। अपनी टेबल पर राइट क्लिक करें और 'कॉपी टेबल एसक्यूएल क्रिएट' चुनें जो कोड बनाता है।

यहां छवि विवरण दर्ज करें


0

यह एक पुराना विषय है लेकिन मैंने कुछ खोजा है। MySQL कार्यक्षेत्र का निर्माण करते समय, यह अन्य तालिका के संबंधों को भी प्राप्त करता है। बस उन खंभों को छोड़ दें जिनसे आप संबंधित हैं। अन्य स्वचालित रूप से जोड़े गए स्तंभों को साफ़ करें। यह मेरे लिए काम करता है।


0

मेरा मामला यह था कि मैं संदर्भित कॉलम पर एक टाइपो था:

MariaDB [blog]> alter table t_user add FOREIGN KEY ( country_code ) REFERENCES t_country ( coutry_code );
ERROR 1005 (HY000): Can't create table `blog`.`t_user` (errno: 150 "Foreign key constraint is incorrectly formed")

त्रुटि संदेश काफी गूढ़ है और मैंने हर चीज की कोशिश की है - कॉलम, कोलाज, इंजन आदि के प्रकारों की पुष्टि करना।

टाइपो को नोट करने में मुझे थोड़ी देर लगी और इसे ठीक करने के बाद सब ठीक हुआ:

MariaDB [blog]> alter table t_user add FOREIGN KEY ( country_code ) REFERENCES t_country ( country_code );
Query OK, 2 rows affected (0.039 sec)              
Records: 2  Duplicates: 0  Warnings: 0

0

जब आप प्राथमिक कुंजी को विभिन्न डेटा प्रकारों में रखते हैं तो मुझे इस समस्या का सामना करना पड़ता है:

तालिका एक:

 Schema::create('products', function (Blueprint $table) {
            $table->increments('id');
            $table->string('product_name');
        });

तालिका 2:

Schema::create('brands', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('brand_name');
        });

दूसरी तालिका की आईडी के लिए डेटा प्रकार वेतन वृद्धि होना चाहिए


0

समस्या को हल करना बहुत सरल है

उदाहरण के लिए: आप नाम के साथ दो टेबल है उपयोगकर्ताओं और पदों और आपके द्वारा बनाए चाहते विदेशी कुंजी में पदों की मेज और आप का उपयोग phpMyAdmin

1) में पोस्ट तालिका जोड़ें नया स्तंभ ( नाम : use_id | प्रकार : की तरह आईडी में उपयोगकर्ता तालिका | लंबाई : की तरह आईडी में उपयोगकर्ता तालिका | डिफ़ॉल्ट : शून्य | गुण : अहस्ताक्षरित | सूचकांक: सूचकांक)

2) संरचना टैब पर संबंध दृश्य पर जाएं ( बाधा नाम : phpmyAdmin द्वारा ऑटो सेट; स्तंभ का नाम : user_id | तालिका : उपयोगकर्ता | कुंजी : आईडी, ...)

यह बस हल किया गया था

जावद मोसवी इरान / उर्मिया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.