![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 1 Dołączył: 4.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
witam,
mam w tej chwili na jednej tabeli UNIQUE KEY składający się z 4 kolumn. To znaczy że w tabeli nie mogą się powtarzać rekordy o tych samych wartościach we wszystkich 4 kolumnach. Teraz chciałbym dodać piątą kolumnę do tego zestawu. Czy jest możliwa modyfikacja takiego UNIQUE KEY ? Jeśli nie to chciałem usunąć UNIQUE KEY i dodać nowy, już z 5 kolumnami. Ale przy próbie usunięcia:
wyskakuje mi błąd - nie może mi go usunąć przez klucze obce. Czy to znaczy że najpierw muszę usunąć klucze obce w tej tabeli? A co wtedy z relacjami łączonymi tą tabele z innymi? po wpisaniu komendy SHOW CREATE TABLE pozycje_zakupowe otrzymałem:
rozumiem że muszę najpierw usunąć klucze obce o nazwach: `pozycje_zakupowe_ibfk_2-6` tak? Potem usunąć UNIQUE KEY i nadać CONSTRAINTY wszystkie jeszcze raz? No i zastanawiam się czym są komendy KEY? Co wprowadzają te 4 linie do mojej tabeli? Bedę wdzięczny za każdą pomoc. Ten post edytował mihmih 12.04.2016, 13:05:49 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj
A jak nie to usuń tylko `pozycje_zakupowe_ibfk_3` PS. BACKUP! Ten post edytował Pyton_000 12.04.2016, 14:14:08 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 1 Dołączył: 4.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
dzięki za odpowiedź.
Nie brakuje czasami w tym twoim poleceniu usunięcia starego UNIQUE KEY? Chyba że któryś wiersz z tego polecenia to robi.... Bo nawet jeśli dodam ten nowy, to stary nie pozwoli mi wprowadzać rekordów o 4 takich samym kolumnach, a piątej różnej. I jeśli to nie problem, to co oznaczają te 4 polecenie zaczynające się od KEY? nie zabrakło ci w 2 wierszu czasami DROP? wtedy wszystko by sie zgadzało. Ten post edytował mihmih 12.04.2016, 14:13:41 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Poprawiłem bo zgubiłem słówko Drop.
KEY to po prostu indeksy stworzone na potrzeby FK |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 1 Dołączył: 4.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
a to dlaczego takich indeksów mam 4, a FK mam 5? Może to głupie pytanie, ale cieszę się że pojawił mi się taki problem, bo zawsze tworzyłem tabelę poprzez edytor, teraz wiem jak to wygląda od strony wiersza poleceń.
I jeszzcze jedno pytanie jeśli mozna, co oznacza w ostatnim wierszu tworzenia tabeli:
wyrażenie AUTO_INCREMENT=244 DEFAULT? niestety przypróbie wpisania twojego polecenia mam błąd: 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER TABLE pozycje_zakupowe DROP INDEX unique_index; ALTER TABLE ADD UNIQUE IND' at line 2 Oczywiście zamieniłem DDDDD na właściwa kolumnę.... Ten post edytował mihmih 12.04.2016, 14:25:11 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
4 ponieważ jako 5 index uzyty został właśnie UNIQUE (pierwsza kolumna w indeksie)
AUTO_INCREMENT=244 - oznacza kolejny numer dla kolumny która ma nadany atrybut auto_increment DEFAULT CHARSET=utf8 - to chyba jasne.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 1 Dołączył: 4.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
dzięki za wyjaśnienia.
Tym razem następujący błąd: 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP INDEX unique_index ON pozycje_zakupowe; ALTER TABLE ADD UNIQUE INDEX unique' at line 2 zatem pozostało mi chyba tylko usunięcie FK.... |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Gdzie ty odpalasz to zapytanie? Bo chyba nie chcesz powiedziec ze w php jako jedno query?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 1 Dołączył: 4.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
nie, nie. Ja mam połączony moduł Base programu Libreoffice poprzez JDBC z Mysqlem. I jest tu możliwość wydawania komend bezpośrednio do MySqla. Nigdy nie miałem z tym problemu, więc to chyba nie wina tego że nie robię tego w Mysqlu. Juz wiele razy wykonywałem tak polecenie ALTEr TABLE, DROP, MODIFY itd i zawsze wszystko działało. Mysql jest niestety na serwerze, gdzie nie mam dostępu.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ale tu masz kilka zapytan a nie jedno. Jesli ty te kilka zapytan slesz jako jedno, to nic dziwnego ze sie wykrzacza
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 1 Dołączył: 4.06.2015 Ostrzeżenie: (0%) ![]() ![]() |
działa, wielkie dzięki!. Musiałem jedynie dodać nazwę tabeli do 3 polecenia. Jeszcze raz dziękuję.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 03:47 |