Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

problemi sa primarnim kljucem... ne moze vise od 10 znakova

  • 5 odgovora
  • 4.002 pregleda

Najnovija ↓

problemi sa primarnim kljucem... ne moze vise od 10 znakova 02.09.2005. u 10:23 · pre 257 meseci #1
napravio sam preko DW formu iz koje podatke saljem u mysql bazu. Sve radi super, ali kada stavim da je primarni kljuc broj sa 13 znakova tada ukoliko u formu unesem "0987654321123" browser mi prijavi gresku "Duplicate entry '2147483647' for key 1" .... kaze da je dupli iz razloga sto sam vec ranije unosio neke podatke i sada se javlja problem sto bez obzira koji broj da unesem on bazu upisuje isti broj a to je "2147483647"

koristim appserv... i DW
Re: problemi sa primarnim kljucem... ne moze vise od 10 znakova 02.09.2005. u 10:32 · pre 257 meseci #2
2147483647 je najveci moguci INTEGER, a broj koji ti pokusavas unijeti u kolonu tipa INT (odnosno INTEGER) je veci od tog maksimalnog, pa MySQL automatski postavlja tu maksimalnu mogucu vrijednost.

Za PRIMARY KEY koristi vjestacki kljuc (surogatni kljuc) i postavi ga na AUTO_INCREMENT, a taj broj 0987654321123 snimaj u neku drugu kolonu.
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: problemi sa primarnim kljucem... ne moze vise od 10 znakova 02.09.2005. u 10:56 · pre 257 meseci #4
Ne znam, jer ne koristim phpmyadmin. :)
To ces morati pitati nekog drugog, mozda u podforumu Web aplikacije...

Ja ti mogu samo napisati, kako to da "rucno" uradis (mislim da mozes da ukucas SQL code u phpmyadminu):
- posto moras da koristis tako velike brojeve, mozda bi trebao da koristis tip BIGINT, koji moze da sacuva brojeve do maksimalno 9223372036854775807 (SIGNED) ili do 18446744073709551615 (ako je UNSIGNED). Mozes da napravis novu kolonu, koja ce biti tipa BIGINT UNSIGNED.
Code:
ALTER TABLE ime_tabele ADD COLUMN kolona_za_velike_brojeve BIGINT UNSIGNED

- ili da editujes postojecu kolonu:
Code:
ALTER TABLE ime_tabele MODIFY ime_primary_key_kolone BIGINT UNSIGNED NOT NULL AUTO_INCREMENT


Javi sta si napravio sa ovime...
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: problemi sa primarnim kljucem... ne moze vise od 10 znakova 10.10.2005. u 07:06 · pre 256 meseci #5
pozdravi

pitas kako problem rijesiti u phpmyadminu

evo ti odgovora:

otvoris phpmadmin odaberes bazu unutar koje ti se nalazi ta tabela, nakon toga on ce ti ispod padajuce liste za baze izlistati tabele koje se nalaze u odabranoj bazi, kliknes na tabelu koju hoces da promjenis, znaci kliknes na slova a ne na slicicu pored, nakon toga ces dobiti, u desnom dijelu stranice, strukturu te tabele, zatim oznacis box pored polja koje hoces da mijenjas i onda ispod dole kliknes na ikonicu koja ima oblik olovke i zove se change.

eh onda ti se otvorio dio za promjenje tu imas ime polja tip i ostale neke osobine

ja predpostavljam da ti je tip (type) polja "int", a ako nije podesi ga na int i iza njega pod Length/Values unesi do koliko znakova zelis da ti bude int dugacak (npr. 15) zatim klikni na save i to ti je to


vozdra
Re: problemi sa primarnim kljucem... ne moze vise od 10 znakova 11.10.2005. u 08:22 · pre 256 meseci #6
Citat:
semsudin: ja predpostavljam da ti je tip (type) polja "int", a ako nije podesi ga na int i iza njega pod Length/Values unesi do koliko znakova zelis da ti bude int dugacak (npr. 15) zatim klikni na save i to ti je to

@semsudin: Nece to bas tako ici. :) Ne moze on staviti da mu int bude dugacak 15 znakova, bas zbog onog ogranicenja, koje sam napisao u poruci iznad.

A evo ti i praktican dokaz:

mysql> create table testing(id int(15));
Query OK, 0 rows affected (0.09 sec)

mysql> insert into testing values(111111111111111);
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> insert into testing values(1111111111111111);
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> insert into testing values(1111111111111111111);
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from testing;
+------------+
| id |
+------------+
| 2147483647 |
| 2147483647 |
| 2147483647 |
+------------+
3 rows in set (0.01 sec)

...

mysql> insert into testing values(111111111);
Query OK, 1 row affected (0.00 sec)

mysql> select * from testing;
+------------+
| id |
+------------+
| 2147483647 |
| 2147483647 |
| 2147483647 |
| 2147483647 |
| 2147483647 |
| 111111111 |
+------------+
6 rows in set (0.01 sec)
Dakle, dzaba ti je i da stavis duzinu na 15, kad ne mozes unijeti vece vrijednosti od 2147483647 ...
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme