09. februar 2003 - 16:11Der er
4 kommentarer og 1 løsning
Hvorfor def. på felters længde i Tabeller
Jeg sidder med en MySql-DB og en hjemmeside i PHP.
Jeg stolte naivt på at min DB ville tage sig af hvis en bruger indtastede et for langt tekststykke, og dette ikke ville blive nødvendigt at behandle i hjemmesiden.
Men nej...man kan endda sætte ind i DB via PhpMyAdmin med jor lange sætninger uden DB brokker sig...hvad er så meningen med at definere det når man oprette tabellen?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
MySQL spytter ikke fejl ud, den tager bare så meget af strengen der indsættes som den har lov til, og sætte det ind.
Ideén med at sætte en varchar til eks. 100 og ikke 200, kunne være for at spare plads.
Hvis du sætter en varchar til eks. 200 og der kun bliver fyldt 100 i den, så udfylder MySQL selv de resterende 100 med en "usynlig" data, som ligger og fylder (få bytes godt nok, men på størrer sites har det noget at sige).
det vil jo sige at man bare kunne sætte en varchar til eks. 10 tegn hver gang, for hvis det bliver sat mere ind end det, så er det også ok?
Jeg troede bare at naå man bestemte størrelsen på en varchar så blev der allokeret x antal bytes som i skriver. Men hvis der så er en der "kommer til" at at skive i et felt med det dobbelte antal tegn end der er allokeret til, så overskrv den noget den ikke måtte...er det ikke menningen med allokering?
Det er en max. på hvormange bytes der kan gemmes i feltet.
MySQL giver ikke nogen fejl, hvis man forsøger at indsætte længere strenge, men smider bare det den er for lang væk.
Det synes jeg er en fejl i MySQL, men sådan er det altså.
Der kan være mange gode grunde til at sætte en max længde på et fekt. Det gør det bl.a. noget nemmere at kode en applikation der bruger databasen, fordi man kender max længden på felterne.
I nogle database sparer man også plads. Andre databaser er smarte nok til kun at gemme actual bytes for en varchar. Jeg ved ikke hvad MySQL gør.
ok Det var nok egentlig det svar jeg ville have...
Jeg havde faktisk heller ikke ret i at man kan indsætte større værdier i DB via phpMyAdmin, end man har tilladt i DB
Takker
Synes godt om
Ny brugerNybegynder
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.