Avatar billede htx98i17 Professor
06. september 2007 - 07:41 Der er 21 kommentarer og
1 løsning

NULL i mysql 4.1.22 ?

Hvad er der med det der 'NULL' :-)

Har læst at hvis et felt oprettes med NOT NULL, så vil mysql ikke indsætte rækken hvis feltet ikke får en værdi.

Jeg har ALDRIG oplevet selv det, selv om phpmyadmin jo som standard sætter felter til NOT NULL.

Hvad kan jeg bruge det til? har version  4.1.22
Avatar billede michael_stim Ekspert
06. september 2007 - 08:28 #1
Det er hvis du har felter der SKAL data i. Hvis der ikke kommer data i et felt der ikke tillader NULL values, er der ingenting der bliver postet i hele räkken.
Avatar billede michael_stim Ekspert
06. september 2007 - 08:30 #2
Det kan f ex väre primärnögler. De tillader aldrig NULL values. En räkke er ikke noget värd hvis man ikke har PK med (hvis de altså er definerede, er ikke alle tabeller der har det).
Avatar billede fsconsult.dk Nybegynder
06. september 2007 - 08:46 #3
husk at en tom streng ER en værdi, og ikke er null, hvilket er tilladt i not null felter  ;-)
Avatar billede htx98i17 Professor
06. september 2007 - 09:30 #4
NULL = tillader NULL værdi
NOT NULL = tillader IKKE NULL (rækker vil ikke blive indsat)

korrekt?

Det har aldrig forhindret mig i at indsætte rækker...

Har det det ved jer?
Avatar billede htx98i17 Professor
06. september 2007 - 09:32 #5
fsconsult -> er husket :)
Avatar billede michael_stim Ekspert
06. september 2007 - 09:37 #6
Kommer an på hvilken editor/manager du bruger. Tror phpMyAdmin er lidt kryptisk.
Pröv at lave en primary key og se hvad der står i dit NULL value felt.

Men i ren tekst er NOT NULL = Tillader IKKE

create table test(
testfelt1 int NOT NULL primary key,
testfelt2 int
);
Noget a lá dette
Avatar billede htx98i17 Professor
06. september 2007 - 09:44 #7
fra phpmyadmin ser strukturen således ud

CREATE TABLE `tider` (
  `id` int(11) NOT NULL auto_increment,
  `url` text NOT NULL,
  `tid` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `brugerid` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM ;

og det er feltet url som i en INSERT ikke er med...
Avatar billede michael_stim Ekspert
06. september 2007 - 09:54 #8
Du er sikker på du ikke har:
INSERT INTO tider(url, tid, brugerid) VALUES('',now(),2);

Eller sådan noget.
Avatar billede htx98i17 Professor
06. september 2007 - 09:58 #9
jep, den ser sådan her ud:
INSERT INTO tider (tid,brugerid) VALUES (NOW(),'$_SESSION[sess_userid]')
Avatar billede michael_stim Ekspert
06. september 2007 - 10:00 #10
Da du ikke har en default value på url, burde det ikke kunne lade sig göre.
Avatar billede htx98i17 Professor
06. september 2007 - 10:01 #11
nej vel...

som sagt, jeg har aldrig været ude for ikke at kunne indsætte en række...

Har I?
Avatar billede michael_stim Ekspert
06. september 2007 - 10:08 #12
Har altid fået fejlmeddelser når jeg har manglet data i et NOT NULL felt.
Avatar billede htx98i17 Professor
06. september 2007 - 10:09 #13
Det fatter jeg ikke...
Jeg bruger mysql med PHP, hvad bruger du?
Avatar billede michael_stim Ekspert
06. september 2007 - 10:11 #14
Er et stykke tid siden jeg har siddet med MySQL, men arbejder med Oracle nu.
Men har siddet med PHP og MySQL.
Avatar billede michael_stim Ekspert
06. september 2007 - 10:12 #15
Men NOT NULL er alm. SQL-standard så det burde ikke betyde noget.
Avatar billede htx98i17 Professor
06. september 2007 - 10:15 #16
Jeg kan godt se det smarte i at bruge NULL/NOT NULL, men jeg kan bare ikke få det til at fungere...
Avatar billede pidgeot Nybegynder
06. september 2007 - 11:18 #17
Nyere udgaver af MySQL er mere strikse med defaultværdier i deres standardopsætning - de bruger ikke nogen fallback hvis der ikke er en defaultværdi, og du ikke angiver data, hvilket gør at den fejler.

Du kan enten slå strict mode fra, tage feltet med i din oprettelse, eller give det en defaultværdi. Af hensyn til kompabilitet bør du vælge en af de to sidste muligheder.
Avatar billede fsconsult.dk Nybegynder
06. september 2007 - 11:27 #18
jeg har ikke haft problemer med at MySQL ikke vil overholde NOT NULL constraints.  Jeg ved dog ikke om der kan være noget med BLOB typer som TEXT .. men det burde også fungerer på dem.
Avatar billede htx98i17 Professor
06. september 2007 - 15:08 #19
fdconsult.dk -> bruger du PHP+mysql? phpmyadmin?
Avatar billede fsconsult.dk Nybegynder
06. september 2007 - 15:19 #20
jeg bruger både php, phpmyadmin og jdbc/java.  phpmyadmin genererer jo kun sql som den sender til MySQL for at oprette/indsætte data.  Den viser endda præcist hvilket sql den forsøger at udføre, hvis du fra phpmyadmin forsøger at indsætte data der ikke burde være tilladt, men som ikke fejler, kan du se den "rå" sql.
Avatar billede htx98i17 Professor
18. september 2007 - 13:56 #21
Lukker spørgsmålet,
nogen som vil have point?
Avatar billede htx98i17 Professor
10. december 2007 - 20:26 #22
tak for deltagelsen
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