[ Igor Gajic @ 05.09.2008. 10:36 ] @
Imam tabelu sa sledecom strukturom:

Code:

CREATE TABLE `poslovnipartner` (
  `idPoslovniPartner` int(10) unsigned NOT NULL auto_increment,
  `PIB_JMBG` char(13) default NULL,
  `MaticniBroj` char(8) default '',
  `Naziv` char(60) default '',
  `Adresa` char(30) default '',
  `VrednostKapitala` decimal(18,2) default '0.00',
  `Kupac` tinyint(1) default NULL,
  `Dobavljac` tinyint(1) default NULL,
  PRIMARY KEY  (`idPoslovniPartner`)
) COLLATE latin1_general_ci ;




U programu na jednom mestu imam da ubacim nekih 300 redova u tabelu poslovni partner,
za funkcionisanje programa bitno mi je da idPoslovniPartner bude kao sto je u programu...

Za ubacivanje podataka koristim sledecu naredbu(C#) :

Code:

                MySqlCommand cmdInsertPP = new MySqlCommand("INSERT INTO poslovnipartner(idPoslovniPartner,PIB_JMBG,MaticniBroj,Naziv,Adresa,VrednostKapitala,Kupac,Dobavljac) VALUES (?idPoslovniPartner,?PIB,?MaticniBroj,?Naziv,?Adresa,?VrednostKapitala,?Kupac,?Dobavljac)", con2);
                cmdInsertPP.Parameters.Add(new MySqlParameter("?idPoslovniPartner", MySqlDbType.UInt32, 4, "idPoslovniPartner"));
                cmdInsertPP.Parameters.Add(new MySqlParameter("?PIB", MySqlDbType.String, 13, "PIB_JMBG"));
                cmdInsertPP.Parameters.Add(new MySqlParameter("?MaticniBroj", MySqlDbType.String, 9, "MaticniBroj"));
                cmdInsertPP.Parameters.Add(new MySqlParameter("?Naziv", MySqlDbType.String, 45, "Naziv"));
                cmdInsertPP.Parameters.Add(new MySqlParameter("?Adresa", MySqlDbType.String, 30, "Adresa"));
                cmdInsertPP.Parameters.Add(new MySqlParameter("?VrednostKapitala", MySqlDbType.Decimal, 20, "VrednostKapitala"));
                cmdInsertPP.Parameters.Add(new MySqlParameter("?Kupac", MySqlDbType.Bit, 1, "Kupac"));
                cmdInsertPP.Parameters.Add(new MySqlParameter("?Dobavljac", MySqlDbType.Bit, 1, "Dobavljac"));
                cmdInsertPP.CommandType = CommandType.Text;



I ovaj kod iz nekog razloga puca kada je nad tabelom definisan AUTO_INCREMENT ?!?
Dakle umesto da ubaci idPoslovniPartner koji mu ja zadam iz programa on ubaci sledeci ID koji mu je u tabeli. Medju
podacima nema ni jedne null vrednosti, i svi ID-ovi su medjusobno razliciti...
E sad problem sa ubacivanjem podataka sam resio tako sto privremeno ukinem AUTO_INCREMENT naredbom:

Code:

ALTER TABLE poslovnipartner CHANGE COLUMN idPoslovniPartner idPoslovniPartner INT(10) UNSIGNED NOT NULL;



I podaci se lepo smeste u bazu podataka. Kada pokusam da vratim AUTO_INCREMENT , on mi daje sledecu gresku:

Citat:

Duplicate entry '1' for key 1


Napominjem da su svi idPoslovniPartner JEDINSTVENI.
Pokusao sam da sve ponovim direktno iz MySQL Query Browser-a i javlja se ista greska. Dakle problem je negde u MySQL...


Pitanje je kako da ubacitim podatke sa AUTO_INCREMENT poljem, a da se pri tome ne buni...
[ Nikola Poša @ 05.09.2008. 11:01 ] @
On ti izbacuje tu greshku zato shto se auto_increment uvodi i pochinje od broja 1. Nakon shto poshaljesh tu komandu za vracanje auto_increment-a, treba da poshaljesh i ovakav upit:
Code:

ALTER TABLE `poslovnipartner` AUTO_INCREMENT = 301 

Ja sam napisao 301, a ti napishi broj koji ti odgovara...
[ Igor Gajic @ 05.09.2008. 11:24 ] @
Probao sam sa tim upitom ali javlja opet istu gresku.

Kao da ne stigne da izvrsi drugu naredbu pre nego sto pocne da proverava AUTO_INCREMENT...


...

Uspeo sam da resim problem. Pre nego sto uradim insert izvrsim komandu:

Code:


ALTER TABLE `poslovnipartner` AUTO_INCREMENT = 301 


Tako da se AUTO_INCREMENT vise ne buni ako upisem neki ID veci od njegove vrednosti...

Nije uopste potrebno iskljucivati AUTO_INCREMENT...

Hvala raynor-u na brzom odgovoru!

[Ovu poruku je menjao Igor Gajic dana 05.09.2008. u 12:37 GMT+1]
[ agvozden @ 06.09.2008. 12:27 ] @
Zato sto ti uopste ne koristis autoincrement mogucnost vec upisujes konkretan ID:

cmdInsertPP.Parameters.Add(new MySqlParameter("?idPoslovniPartner", MySqlDbType.UInt32, 4, "idPoslovniPartner"));

izostavi ovu liniju i baza ce ti dati sama novi ID...
[ Igor Gajic @ 08.09.2008. 06:59 ] @
Kao sto sam napisao:

Citat:

U programu na jednom mestu imam da ubacim nekih 300 redova u tabelu poslovni partner,
za funkcionisanje programa bitno mi je da idPoslovniPartner bude kao sto je u programu...



U sustini se radi o importu podataka iz DBF fajlova u MySQL, pa da bih sacuvao integritet podataka moram da ih ubacim na tacno odredjeno mesto, a posle importa podataka, program nastavlja normalno funkcionisanje, tj. auto_increment i ostalo...