![]() |
Datenbank: MySQL • Version: 5.0 • Zugriff über: PHP-Funktionen
MySQL: Foreign Key Constraints ermitteln
Hallo ihr,
ich wollte in einer Web-Applikation Foreign Key Constraints in der MySQL-Datenbank nutzen. Funktioniert an sich wunderbar, jedoch besteht noch ein kleines Problem. Die Web-Applikation stellt automatisch alle Aenderungen am Code und an der Datenbank in ein Update-Script, welches sich dann schnell auf einzelne Installationen verteilen laesst. Die Indizes selbst kann ich ja ohne weiteres mit
SQL-Code:
rausfischen. Allerdings werden Foreign Keys da nicht mit angezeigt.
SHOW INDEX FROM <tablename>
Eine Suche im Netz hat mich auch nicht wirklich weitergebracht, anscheinend scheint der einzige Weg zu sein, in der information_schema-Datenbank von MySQL selbst rumzusuchen und sich die Constraints selbst rauszusuchen. Da das wohl kaum ne Loesung ist (schliesslich hat nicht jeder User Zugriff auf diese Datenbank), wuerde ich mich gerne nach einer anderen Loesung umsehn. Kennt jemand ne Moeglichkeit, Foreign Keys fuer eine Tabelle rauszuholen? SHOW CREATE TABLE ist uebrigens auch keine Option, da ich evtl. auch ein Update-Query bauen muss, und ich nicht wirklich Lust hab, das CREATE-Statement auseinanderzuparsen ;) Greetz alcaeus |
Re: MySQL: Foreign Key Constraints ermitteln
SQL-Code:
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
|
Re: MySQL: Foreign Key Constraints ermitteln
Moin omata,
soweit war ich auch schon - aber guck dir den Output selbst an:
Code:
Dass ich das Comment-Feld durchparsen muss, ist eine Sache; dass es dabei auch noch abgeschnitten ist, bringt mich aber auch nicht weiter.
Array
( [Name] => product_order [Engine] => InnoDB [Version] => 10 [Row_format] => Compact [Rows] => 0 [Avg_row_length] => 0 [Data_length] => 16384 [Max_data_length] => 0 [Index_length] => 32768 [Data_free] => 0 [Auto_increment] => 1 [Create_time] => 2008-11-30 17:05:48 [Update_time] => [Check_time] => [Collation] => utf8_general_ci [Checksum] => [Create_options] => [Comment] => InnoDB free: 67584 kB; (`product_category` `product_id`) REFER `test/product`(`c ) Greetz alcaeus |
Re: MySQL: Foreign Key Constraints ermitteln
Also bei mir ist da nix abgeschnitten im Comment-Feld ... MySQL 4 mit PHP 5.2 auf Windows XP IIS5 ...
Code:
Viele andere Möglichkeiten bleiben dir laut MySQL Manual auch leider nicht ...
Array
( [Name] => assoc [Engine] => InnoDB [Version] => 9 [Row_format] => Fixed [Rows] => 5 [Avg_row_length] => 3276 [Data_length] => 16384 [Max_data_length] => [Index_length] => 32768 [Data_free] => 0 [Auto_increment] => [Create_time] => 2008-01-02 12:07:34 [Update_time] => [Check_time] => [Collation] => latin1_swedish_ci [Checksum] => [Create_options] => [Comment] => InnoDB free: 10240 kB; (`pid`) REFER `db/project`(`id`) ON DELETE CASCADE; (`eid`) REFER `db/employees`(`id`) ON DELETE CASCADE ) P.S.: Also das Comment Feld müsste sich ja astrein parsen lassen. Einfach bei den Semikola (Schreibweise?) String trennen und die einzelnen Teile mit RegEx zerplücken. Ggf. findet sich dazu ja scho fertiger Code im Netz... Viele Grüße |
Re: MySQL: Foreign Key Constraints ermitteln
Zitat:
Zitat:
Ich guck mir das nochmal an, wenn das Comment-Feld nicht abgeschnitten waer, koennt ich damit ja was anfangen, so ists aber ein Problem Greetz alcaeus |
Re: MySQL: Foreign Key Constraints ermitteln
Zudem ist die Länge des Comment-Feldes (Bei mir sinds 80 Zeichen) beschränkt; Bei mehreren Foreign-Keys gibt das dann Probleme.
Die einzige (saubere und sichere) Variante scheint echt das information_schema zu sein. greetz Mike |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz