Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> SHOW INDEX MULTIPLE UNIQUE, jak zmusic mysql do wyswietlenia wszystkich kluczy (w tym MUL UNI)
phoenix84
post
Post #1





Grupa: Zarejestrowani
Postów: 218
Pomógł: 0
Dołączył: 14.04.2004
Skąd: Słupsk, Nowy Sącz

Ostrzeżenie: (0%)
-----


sprawa troche zawila...

mam CMS ktory koordynuje kilka serwerow...

no i mam tam autoaktualizacje... dzialalo to tak, ze serwer sobie sprawdzal czy struktury kolumn sa identyczne, jak nie to je odpowiednio przebudowywal zachowujac dane
wszystko dzialalo cacy, az nie dodalem klucza UNIQUE na wiecej niz jedna kolumne... wtedy SHOW COLUMNS zwraca MUL, a nie UNI i niestety nie informuje, na ktore kolumny ten unique jeszcze jest nalozony... oczywiscie jest 1 unique na kilku kolumnach... oczywiscie chcialbym rozwiazac problem przyszlosciowo, czyli napisac rozwiazanie dzialajace rowniez jak bedzie wiecej niz 1 multiple unique w tabeli...

jakies pomysly? w google rozwiazania polowiczne... nigdzie nie znalazlem niczego sensownego... cos show index where podpowiada, ale nadal nie pokazuje, ktore kolumny z ktorymi sa w unique...

Na pewno jest to mozliwe, bo w PhpMyAdmin wszystkie klucze sa listowane poprawnie, jednak nie jest wyswietlana komenda, jak to uzyskac...

pozdrawiam,

k.

Ten post edytował phoenix84 20.07.2010, 19:35:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Mchl
post
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Rzuć okiem na tabelę[1] `information_schema`.`KEY_COLUMN_USAGE`

[1] Widok tak naprawdę

Ten post edytował Mchl 20.07.2010, 19:41:00
Go to the top of the page
+Quote Post
phoenix84
post
Post #3





Grupa: Zarejestrowani
Postów: 218
Pomógł: 0
Dołączył: 14.04.2004
Skąd: Słupsk, Nowy Sącz

Ostrzeżenie: (0%)
-----


sorki, ale nie kumam tego co napisales... do czego to przyczepic? (IMG:style_emoticons/default/smile.gif)

ale znalazlem inny punkt zaczepienia

show index tabela zwraca tabele, ktora ma kolumne "Seq_in_index" i to jest chyba to czego szukam, bo kazdy index ma swoja nazwe... i wsrod tej nazwy ma znaczenie ta sekwencja... i jak to obrobie to powinno dzialac... jednak z ciekawosci, chce wiedziec jaka byla Twoja idea... moze jakis latwiejjszy pomysl (IMG:style_emoticons/default/smile.gif)

EDIT:

juz zakumalem... dla takich nie kumatych jak ja... information schema to dodatkowa baza danych dobudowana do kazdej bazy w mysql... (IMG:style_emoticons/default/smile.gif) oczywsicie masz racje... obie opcje dzialaja podobnie... jednak w mojej nie trzeba zmieniac bazy na ktorej sie pracuje... czasem to ma znaczenie...

pozdro,

k.

Ten post edytował phoenix84 20.07.2010, 20:04:58
Go to the top of the page
+Quote Post
Mchl
post
Post #4





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Takie zapytanie

Kod
SELECT CONSTRAINT_NAME, GROUP_CONCAT(COLUMN_NAME) AS COLUMN_NAME FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE CONSTRAINT_SCHEMA = 'twojaBaza' AND TABLE_NAME = 'twojaTabela' GROUP BY CONSTRAINT_NAME


Da Ci listę kluczy w danej tabeli wraz z kolumnami wchodzącymi w ich skład.


[edit]

W mojej też nie trzeba zmieniać bazy. Po co mamy kropkę? (IMG:style_emoticons/default/tongue.gif)

Ten post edytował Mchl 20.07.2010, 20:10:13
Go to the top of the page
+Quote Post
phoenix84
post
Post #5





Grupa: Zarejestrowani
Postów: 218
Pomógł: 0
Dołączył: 14.04.2004
Skąd: Słupsk, Nowy Sącz

Ostrzeżenie: (0%)
-----


Oczywiscie dziala fantastycznie!

pozdro,

k.

oczywiscie ide dalej... by uzyskac do tego typ klucza... zmodyfikowalem, jak nizej... ale w wersji PRIMARY dostaje "id,id,id,id..." oczywiscie to nie to co chcialem uzyskac, choc UNIQUE dzialaja bez problemu...

  1. SELECT CONSTRAINT_NAME, GROUP_CONCAT( COLUMN_NAME ) AS COLUMN_NAME, CONSTRAINT_TYPE
  2. FROM `information_schema`.`KEY_COLUMN_USAGE`
  3. INNER JOIN `information_schema`.`TABLE_CONSTRAINTS` USING (CONSTRAINT_NAME) WHERE `information_schema`.`KEY_COLUMN_USAGE`.`CONSTRAINT_SCHEMA` = 'pisil_1'
  4. AND `information_schema`.`KEY_COLUMN_USAGE`.`TABLE_NAME` = 'cms_fbn_subskrybenci'
  5. GROUP BY CONSTRAINT_NAME


moze jakis pomysl,

k.

Ten post edytował phoenix84 20.07.2010, 22:17:58
Go to the top of the page
+Quote Post
Mchl
post
Post #6





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Kod
GROUP_CONCAT(DISTINCT COLUMN_NAME )
Go to the top of the page
+Quote Post
phoenix84
post
Post #7





Grupa: Zarejestrowani
Postów: 218
Pomógł: 0
Dołączył: 14.04.2004
Skąd: Słupsk, Nowy Sącz

Ostrzeżenie: (0%)
-----


no i smiga!

dzieki!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 20:32