• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed MySql, nie rozumiem dlaczego kod się nie kompiluje

0 głosów
78 wizyt
pytanie zadane 21 maja w SQL, bazy danych przez lalunia2137 Nowicjusz (120 p.)
zamknięte 21 maja przez lalunia2137

Witajcie, nie kompiluje mi się ten kod, na nawiasach zamykających w drugiej i trzeciej tabeli pokazuje, że oczekiwano nazwy symbolu, nie mam pojęcia o co chodzi, to moja pierwsza baza danych, proszę pomóżcie


 

CREATE DATABASE market

CREATE TABLE pracownik (
    id int not null primary key,
    imie text not null,
    nazwisko text not null,
    posada text not null,
    FOREIGN KEY  (posada) REFERENCES posady(id)
);

INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (1,'Krzysztof','Kowalski','1');
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (2,'Marcin','Polanski','2');
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (3,'Filip','Gawin','4');
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (4,'Franciszek','Zuchowski','3');
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (5,'Szymon','Tomaszewicz','4');
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (6,'Damian','Klonowski','2');
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (7,'Wiktor','Drazkowski','1');
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (8,'Bartek','Laszkiewicz','3');
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (9,'Adrian','Kwasnik','1');
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (10,'Piotr','Kowalczyk','2');

SELECT * FROM pracownik;

CREATE TABLE czas_pracy (
    id int not null primary key,
    czas int not null,
);

INSERT INTO czas_pracy (id, czas) VALUES (1,'40');
INSERT INTO czas_pracy (id, czas) VALUES (2,'39');
INSERT INTO czas_pracy (id, czas) VALUES (3,'20');
INSERT INTO czas_pracy (id, czas) VALUES (4,'42');
INSERT INTO czas_pracy (id, czas) VALUES (5,'52');
INSERT INTO czas_pracy (id, czas) VALUES (6,'2');
INSERT INTO czas_pracy (id, czas) VALUES (7,'41');
INSERT INTO czas_pracy (id, czas) VALUES (8,'43');
INSERT INTO czas_pracy (id, czas) VALUES (9,'38');
INSERT INTO czas_pracy (id, czas) VALUES (10,'28');

SELECT * FROM czas_pracy;

CREATE TABLE posady (
    id int not null primary key,
    posada text not null,
    wyplata int not null,
);

INSERT INTO posady (id,posada,wyplata) VALUES (1,,'Merchandiser',20);
INSERT INTO posady (id,posada,wyplata) VALUES (2,,'Kasjer',22);
INSERT INTO posady (id,posada,wyplata) VALUES (3,'Magazynier',27);
INSERT INTO posady (id,posada,wyplata) VALUES (4,'Kierownik',32);

SELECT * FROM posady;

 

komentarz zamknięcia: mam to, dzieki
1
komentarz 21 maja przez Wiciorny Ekspert (221,970 p.)
Mysql nie jest jezykiem kompilowalnym, moze dlatego
komentarz 21 maja przez lalunia2137 Nowicjusz (120 p.)
wklejam ten kod do localhost, żeby zrobić bazę danych i nie działa
komentarz 21 maja przez Wiciorny Ekspert (221,970 p.)
sprawdz jeszcze czy nie limituje Cie CREATE DATABASE market i brak średnika na końcu, po drugie nie widze logów, błędów to nic ci nie poradze
komentarz 21 maja przez lalunia2137 Nowicjusz (120 p.)

dodałem średnik i usunąłem przecinki w miejscach gdzie ich nie powinno być i wyskakuje takie coś

CREATE DATABASE market



CREATE TABLE czas_pracy (
    id int not null primary key,
    czas int not null
);

 

MySQL zwrócił komunikat: Dokumentacja

#1064 - Something is wrong in your syntax obok 'CREATE TABLE czas_pracy (
    id int not null primary key,
    czas int not...' w linii 5

komentarz 22 maja przez VBService Mędrzec (171,990 p.)
edycja 23 maja przez VBService

Możesz też użyć ALTER i na "końcu" kodu sql dodać klucz (FOREIGN KEY)

przykład

DROP DATABASE IF EXISTS market;
CREATE DATABASE market;
 
CREATE TABLE pracownik (
    id int not null primary key,
    imie text not null,
    nazwisko text not null,
    posada int not null
    #FOREIGN KEY (posada) REFERENCES posady(id)
);
 
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (1,'Krzysztof','Kowalski',1);
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (2,'Marcin','Polanski',2);
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (3,'Filip','Gawin',4);
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (4,'Franciszek','Zuchowski',3);
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (5,'Szymon','Tomaszewicz',4);
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (6,'Damian','Klonowski',2);
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (7,'Wiktor','Drazkowski',1);
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (8,'Bartek','Laszkiewicz',3);
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (9,'Adrian','Kwasnik',1);
INSERT INTO pracownik (id, imie, nazwisko, posada) VALUES (10,'Piotr','Kowalczyk',2);
 
SELECT * FROM pracownik;
 
CREATE TABLE czas_pracy (
    id int not null primary key,
    czas int not null
);
 
INSERT INTO czas_pracy (id, czas) VALUES (1,40);
INSERT INTO czas_pracy (id, czas) VALUES (2,39);
INSERT INTO czas_pracy (id, czas) VALUES (3,20);
INSERT INTO czas_pracy (id, czas) VALUES (4,42);
INSERT INTO czas_pracy (id, czas) VALUES (5,52);
INSERT INTO czas_pracy (id, czas) VALUES (6,2);
INSERT INTO czas_pracy (id, czas) VALUES (7,41);
INSERT INTO czas_pracy (id, czas) VALUES (8,43);
INSERT INTO czas_pracy (id, czas) VALUES (9,38);
INSERT INTO czas_pracy (id, czas) VALUES (10,28);
 
SELECT * FROM czas_pracy;
 
CREATE TABLE posady (
    id int not null primary key,
    posada text not null,
    wyplata int not null
);
 
INSERT INTO posady (id,posada,wyplata) VALUES (1,'Sprzedawca',20);
INSERT INTO posady (id,posada,wyplata) VALUES (2,'Kasjer',22);
INSERT INTO posady (id,posada,wyplata) VALUES (3,'Magazynier',27);
INSERT INTO posady (id,posada,wyplata) VALUES (4,'Kierownik',32);
 
SELECT * FROM posady;

ALTER TABLE pracownik
ADD FOREIGN KEY (posada) REFERENCES posady(id);

 

1 odpowiedź

0 głosów
odpowiedź 21 maja przez Wiciorny Ekspert (221,970 p.)

Kolejność tabela Pracownik ma klucz do tabeli która nie została utworzona jeszcze 

CREATE TABLE pracownik (
    id int not null primary key,
    imie text not null,
    nazwisko text not null,
    posada text not null,
    FOREIGN KEY  (posada) REFERENCES posady(id)
);

robisz klucz obcy do tabeli która nie istnieje, kolejność jest ważna -> skrypt wykonywany jest linia po lini, możę dlatego.  

komentarz 21 maja przez lalunia2137 Nowicjusz (120 p.)

nadal nie działa, to nie to, na nawiasach wyskakuje

  1. Oczekiwano nazwy symbolu! (near ")" at position 115)

nie wiem o co chodzi

 

komentarz 21 maja przez Wiciorny Ekspert (221,970 p.)
CREATE DATABASE market ( dodaj tu średnik może)
Gdzieś jest literówka.
Tutaj jest twoje pytanie, masz nawet odpowiedzi : https://stackoverflow.com/questions/72328299/i-dont-know-why-this-sql-code-isnt-working
komentarz 21 maja przez lalunia2137 Nowicjusz (120 p.)

Dodałem ten średnik i usunąłem niepotrzebne przecinki i teraz wyskakuje coś takiego 

CREATE DATABASE market



CREATE TABLE czas_pracy (
    id int not null primary key,
    czas int not null
);

 

MySQL zwrócił komunikat: Dokumentacja

#1064 - Something is wrong in your syntax obok 'CREATE TABLE czas_pracy (
    id int not null primary key,
    czas int not...' w linii 5

komentarz 21 maja przez lalunia2137 Nowicjusz (120 p.)

@Wiciorny, od momentu dodania tamtego postu, który mi zamknęli dokonałem małych zmian w kodzie i nadal nie działa, a ich odpowiedzi nie pomogły, nadal wywala jakiś błąd

 

komentarz 21 maja przez Wiciorny Ekspert (221,970 p.)
CREATE TABLE czas_pracy (
    id int not null primary key,
    czas int not null
);

usun przecinki z ostatnich kolumn tutaj i w następnej 

komentarz 21 maja przez lalunia2137 Nowicjusz (120 p.)
usunąłem już, właśnie po tym wyrzuca ten błąd wyżej
komentarz 21 maja przez Wiciorny Ekspert (221,970 p.)
boże nie bede Cię prowadził za rączkę
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=e5d8e2dc11e4480c1141a704630fa24d
masz użyj tego narzędzia i sobie popoprawiaj. https://dev.mysql.com/doc/refman/8.0/en/blob.html

Text- jaki text?
https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html
jak uzywasz typu to poczytaj o jego poprawności
komentarz 21 maja przez Wiciorny Ekspert (221,970 p.)
MySQL może indeksować tylko pierwsze N ​​znaków kolumny BLOB lub TEXT. Więc błąd występuje głównie, gdy istnieje typ pola/kolumny TEXT lub BLOB lub te należą do typów TEXT lub BLOB, takich jak TINYBLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, MEDIUMTEXT i LONGTEXT, które próbujesz utworzyć jako klucz podstawowy lub indeks. Z pełnym BLOBem lub TEKSTEM bez wartości długości, MySQL nie jest w stanie zagwarantować niepowtarzalności kolumny, ponieważ ma ona zmienny i dynamiczny rozmiar. Tak więc, gdy używasz typów BLOB lub TEXT jako indeksu, należy podać wartość N, aby MySQL mógł określić długość klucza. Jednak MySQL nie obsługuje limitu długości klucza w TEXT lub BLOB. TEKST(88) po prostu nie zadziała.

Podobne pytania

–1 głos
2 odpowiedzi 104 wizyt
pytanie zadane 1 czerwca 2020 w SQL, bazy danych przez WiktroH Mądrala (6,550 p.)
–1 głos
2 odpowiedzi 144 wizyt
0 głosów
1 odpowiedź 63 wizyt
pytanie zadane 20 maja 2020 w SQL, bazy danych przez WiktroH Mądrala (6,550 p.)

88,328 zapytań

136,921 odpowiedzi

305,575 komentarzy

58,599 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...