Błąd podczas dodawania kolumn do tabeli

0

Witam! Mam problem, gdy chce dodać tabele i kolumny do niej za pomocą polecenia: https://4programmers.net/Pastebin/8903
to wyskakuje mi taki błąd: https://4programmers.net/Pastebin/8904

Proszę o pomoc bo w MySQL-u jestem zupełnie nowy

Z góry dziękuje

0

Spróbuj tak:

CREATE TABLE `people`.`dane` (
  `Name` LONGTEXT CHARACTER SET 'utf8' COLLATE 'utf8_polish_ci' UNIQUE,
  `Surname` LONGTEXT CHARACTER SET 'utf8' COLLATE 'utf8_polish_ci' UNIQUE,
  `Town` LONGTEXT CHARACTER SET 'utf8' COLLATE 'utf8_polish_ci' UNIQUE,
  `Country` LONGTEXT CHARACTER SET 'utf8' UNIQUE,
  PRIMARY KEY (`Name`, `Surname`, `Town`, `Country`)
  );

ale to jest bez sensu że masz wszystkie pola UNIQUE

0

1170: BLOB/TEXT column 'Name' used in key specification without a key length
Teraz jest taki błąd

P.S o co chodzi z tymi polami UNIQUE

1

To ja pytam o co z nimi chodzi...
Miałeś każde z pól zdefiniowane jako UNIQUE, a chyba nie o to ci chodzi. Podobnie bezsensowne jest robienie Imienia i Nazwisko na polach typu BLOB :)
Sprawdż, czy to spełnia oczekiwania twe... (Dodałem ID):

CREATE TABLE `people`.`dane` (
  id int not null auto_increment primary key,
  `Name` VARCHAR(100) CHARACTER SET 'utf8' COLLATE 'utf8_polish_ci' ,
  `Surname` VARCHAR(100) CHARACTER SET 'utf8' COLLATE 'utf8_polish_ci' ,
  `Town` VARCHAR(100) CHARACTER SET 'utf8' COLLATE 'utf8_polish_ci' ,  
  `Country` VARCHAR(100) CHARACTER SET 'utf8' ,
  UNIQUE (`Name`, `Surname`, `Town`, `Country`)
  );
0

Zadziałało ! :-)

A co te pola UNIQUE robią i co to jest ten BLOB ?

3

**UNIQUE **oznacza, iż wartość w danej kolumnie nie może się powtarzać. Czyli jak np. dodasz użytkownika z imieniem Janek, a potem spróbujesz dodać kolejnego Janka, to system Ci tego nie przyjmie, bo taka wartość się już pojawiła w kolumnie z imionami. Może to mieć sens w kolumnie z nr PESEL albo np. z numerem seryjnym urządzenia - w ten sposób unikniesz omyłkowego wpisania danej rzeczy więcej niż raz, możesz także wychwycić błędy powstałe podczas wprowadzania danych do systemu. Ale w wypadku imion, nazwisk, adresów itp. jest to bzdura - w ten sposób możesz mieć tylko jednego Janka w całej tabeli, a także tylko jedna osoba będzie mogła mieszkać na danej ulicy.

Co do BLOB - są to pola do przechowywania plików (tak w dużym uproszczeniu). Nazwa BLOB to skrót od Binary Large OBject. Chodzi o to, że w nich można przechowywać pewne dane niebędące tekstem - np. plik graficzny, nagranie dźwiękowe lub cokolwiek, co w przypadku zapisu na dysku byłoby plikiem. Wiem, że definicja nie jest fachowa, ale sądząc po Twoim pytaniu, totalnie nie masz pojęcia o co tu chodzi, więc tak chyba łatwiej będzie Ci to wyjaśnić ;)

Zresztą Google i Internet nie boli:
https://pl.wikipedia.org/wiki/Blob_(bazy_danych)
https://www.w3schools.com/sql/sql_unique.asp
https://technet.microsoft.com/pl-pl/library/ms191166(v=sql.105).aspx

0

Dzięki za pomoc !!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1