Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: MySQL: auto_increment ei onnistu

Sivun loppuun

rauski3 [15.05.2010 11:14:21]

#

Yritän tehdä taulun yhdestä kentästä automaattisesti päivittyvän laskurin, määrittelemällä sen auto_increment:ksi, mutta saan ilmoituksen: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key. Ilmoitus viitannee tuolla auto column:lla automaattisesti päivittyvään kenttään, jonka tyyppi on timestamp (on uppdate current_timestamp). Voiko INSERT -lauseessa syöttää kenttään lausekkeen, joka paivittää kentän arvon?

vehkis91 [15.05.2010 11:33:26]

#

jos haluat taulun auto_incrementiksi, niin sen tyypin täytyy olla jokin intin variaatio. esim tinyint.

Antti Laaksonen [15.05.2010 11:54:37]

#

Vika voi olla siinä, että kenttä ei ole taulun avain ("it must be defined as a key"). Ratkaisu on määritellä kenttä ensin taulun avaimeksi.

Voit käyttää seuraavaa SQL-komentoa:

ALTER TABLE taulu ADD PRIMARY KEY (kentta)

Kentän voi määritellä avaimeksi myös suoraan phpMyAdminissa (kuvake, jossa on avaimen kuva).

rauski3 [15.05.2010 12:18:41]

#

vehkis91 kirjoitti:

jos haluat taulun auto_incrementiksi, niin sen tyypin täytyy olla jokin intin variaatio. esim tinyint.

Se on BIGINT.

Teuro [15.05.2010 12:22:06]

#

Ekassa viestissäsi kentän tyypi oli kylläkin timestamp, jolle ei voi kohdistaa tuota asetusta. Sen sijaan timestamoille voi antaa asetuksen ON UPDATE CURRENT TIMESTAMP lipun tjsp katso manuskasta oikea asetus.

rauski3 [15.05.2010 12:31:17]

#

Selitin asian huonosti.

Kirjoitin "Ilmoitus viitannee tuolla auto column:lla automaattisesti päivittyvään kenttään, jonka tyyppi on timestamp (on uppdate current_timestamp)

mutta piti kirjoittaa

Ilmoitus viitannee tuolla auto column:lla taulussa jo olevaan toiseen kenttään, automaattisesti päivittyvään, jonka tyyppi on timestamp (on uppdate current_timestamp).

Sorry sekaannus

Chiman [15.05.2010 13:07:43]

#

Selkeintä olisi, jos laittaisit tänne näkyviin taulun luontikomennon ja siitä tulevan virheilmoituksen sellaisenaan.

Macro [15.05.2010 14:41:15]

#

Luo auto increment-kentät näin:

CREATE TABLE x(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ...);

pistemies [15.05.2010 21:49:50]

#

lainaus:

Yritän tehdä taulun yhdestä kentästä... määrittelemällä sen auto_increment:ksi,

Ilmoitus viitannee .... taulussa jo olevaan toiseen kenttään....
Voiko INSERT -lauseessa syöttää kenttään lausekkeen, joka paivittää kentän arvon?

Ymmärrärsin, että et ole lisäässä tauluun uutta kenttää, vaan muuttamassa olemassa olevan kentän tyyppiä. Auttaisiko tämän tapainen:

ALTER TABLE Taulu MODIFY Kentta KENTAN_TYYPPI

pistemies [16.05.2010 19:05:22]

#

Tässä vielä suora lainaus tuolta: http://bugs.mysql.com/bug.php?id=10459

alter table t1 modify f1 int(4) auto_increment

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta