Avatar billede bigg Nybegynder
19. januar 2006 - 13:15 Der er 13 kommentarer

Problem med INSERT

Jeg har lige flytte server, og køre nu mysql 5.
har nogle gamle websites som nu ikke virker efter
flytningen.

Det er pga. INSERT INTO value ('','data')

Hvor '' er en primary key med auto_increment

Ved godt det er den dovne måde at insætte række i db'en, men
det har altid virket indtil nu.

/Bigg
Avatar billede innercitydk Nybegynder
19. januar 2006 - 13:34 #1
Nå der er Autoincrement skal du ikke lave '' i mysql, eller andre jeg kender til :) du skal bare lave felter være blankt. Tabellen sørger selv for at indsætte et nummer.

Du skal skrive:

INSERT INTO Tabelnavn(feltnavn) VALUES ('data')

Vh Nicki
Avatar billede innercitydk Nybegynder
19. januar 2006 - 13:34 #2
*lade
Avatar billede bigg Nybegynder
19. januar 2006 - 13:40 #3
Nu vil jeg ikke være flabet, men den dovne måde har ihvertfal virket siden mysql 3.*.
Kan du forstå min fustration, du for ikke mig til at omkode 10 websites.. ( HELL NOO ).

/Bigg
Avatar billede erikjacobsen Ekspert
19. januar 2006 - 13:57 #4
Det er også lovlig syntaks i mysql 5 - for god ordens skyld testet i MySQL 5.0.18.
Der ku' være noget andet galt, men det er ikke til at vide, når det eneste du anfører er at det "ikke virker".
Avatar billede erikjacobsen Ekspert
19. januar 2006 - 13:58 #5
Og helt præcist skal det jo være

  INSERT INTO dittabelnavn VALUES ('','data')
Avatar billede bigg Nybegynder
19. januar 2006 - 14:16 #6
Jeg har søgt lidt på nettet, måske en bug.
Mit id <-- primary key er af typen bigint(8) den får en fejl ved at insætte værdien 456 hvilket sagtens ville kunne være i en bigint(8)

Out of range value adjusted for column `id`

Noget med der er fejl i numeriske datatyper..

Tænkte om der var noget i ini filen jeg kunne ændre?..

/Bigg
Avatar billede bigg Nybegynder
19. januar 2006 - 14:36 #7
Og har skrevet INSERT INTO dittabelnavn VALUES ('','data') my bad...
I starten

/Bigg
Avatar billede erikjacobsen Ekspert
19. januar 2006 - 19:11 #8
Jah, og en INT skulle være rigeligt. Der er ikke umiddelbart noget i det du har vist, der skulle være fejl i.
Avatar billede pidgeot Nybegynder
19. januar 2006 - 19:24 #9
I MySQL 5 er der kommet en strict mode, der som standard er slået til. Du bliver nødt til at få ændret serverens SQL mode (STRICT_TRANS_TABLES skal slås fra), eller også må du omkode alle dine scripts til at bruge den "lange" måde, og uden at angive dine auto_increment felter.

Hvis ingen af disse er muligt, må du nedgradere til MySQL 4.1 (eller 4.0, om nødvendigt).

Hvorfor den kløjes i det når du sætter 456 ind, skal jeg ikke kunne sige - det skulle da lige være hvis denne værdi allerede findes i tabellen.
Avatar billede pidgeot Nybegynder
19. januar 2006 - 19:27 #10
Avatar billede bigg Nybegynder
19. januar 2006 - 22:19 #11
Jeg vil sige efter lidt forskellinge forsøg.. Fandt jeg ud af at jeg skulle sætte sql_mode til ANSI_QUOTES... Har prøvet det der var lettere her i livet.. :)

/Bigg
Avatar billede pidgeot Nybegynder
19. januar 2006 - 22:45 #12
Jeg tænker mig til jeg så skal lægge et svar for at pege dig hen mod dokumentationen til SQL Mode - omend jeg er lidt usikker på hvorfor netop det hjalp, som jeg læser dokumentationen burde det ikke påvirke dit problem...

Men nå, det vigtigste er vel det virker ^^;
Avatar billede bigg Nybegynder
19. januar 2006 - 23:39 #13
Det går nok, det var et skub i den rigtige retning.. ;)

/Bigg
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester