• 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

Object Storage Arubacloud
0 głosów
447 wizyt
pytanie zadane 21 maja 2022 w SQL, bazy danych przez lalunia2137 Nowicjusz (120 p.)
zamknięte 21 maja 2022 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 2022 przez Wiciorny Ekspert (270,170 p.)
Mysql nie jest jezykiem kompilowalnym, moze dlatego
komentarz 21 maja 2022 przez lalunia2137 Nowicjusz (120 p.)
wklejam ten kod do localhost, żeby zrobić bazę danych i nie działa
komentarz 21 maja 2022 przez Wiciorny Ekspert (270,170 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 2022 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 2022 przez VBService Ekspert (253,340 p.)
edycja 23 maja 2022 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 2022 przez Wiciorny Ekspert (270,170 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 2022 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 2022 przez Wiciorny Ekspert (270,170 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 2022 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 2022 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 2022 przez Wiciorny Ekspert (270,170 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 2022 przez lalunia2137 Nowicjusz (120 p.)
usunąłem już, właśnie po tym wyrzuca ten błąd wyżej
komentarz 21 maja 2022 przez Wiciorny Ekspert (270,170 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 2022 przez Wiciorny Ekspert (270,170 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 264 wizyt
pytanie zadane 1 czerwca 2020 w SQL, bazy danych przez WiktroH Mądrala (6,550 p.)
–1 głos
2 odpowiedzi 396 wizyt
0 głosów
1 odpowiedź 112 wizyt
pytanie zadane 20 maja 2020 w SQL, bazy danych przez WiktroH Mądrala (6,550 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...