Jeg skal udføre flg. ------------------------------------------- insert into karakter (navn,efternavn,level) values(\"Jens\",\"Hansen\",1) ------------------------------------------- Problemet er at \"level\" er et reserveret ord, hvordan kan jeg udføre det.
Jeg har prøvet at skrive \"karakter.level\", så klagede den over at den ikke kan finde feltet \"karakter.level\".
Prøver jeg et andet reserveret ord, kan jeg ikke engang oprette tabellen:
CREATE TABLE test2 ( by int(11) );
Såeh - hvordan dit problem egentligt er opstået kan jeg ikke spore eller eftergøre - men det er da interessant - gider du poste et par detaljer så vi kan få syn for sagen?
Så vist jeg kan se i min dokumentation for MySql (det er godt nok til en lidt halvgammel version) er level ikke reserveret. Men de skriver også at pga. deres parseteknik (yacc) kan man ikke lave krumspring med de reserverede ord, som f.eks. at sætte [] rundt om. Men det er jo intet problem, man kan jo bare kalde dem noget andet, og som steffen så smukt udtaler: tabellen kan slet ikke oprettes med disse navne.
Jeg tror dit \"level\" problem er et andet end du tror. Kan vi få flere oplysninger, så kan vi helt sikkert også løse det.
Jeg er forbløffet over eksperterne på andre databaser som udtaler sig om MySQL og eksperterne på MySQL som ikke prøver spørgsmålet af.
Hvis man vil have hjælp må man give så mange relevante informationer som muligt. For eksempel: Hvilken MysQL version er der tale om og hvilket OS bruger du.
MySQL er i en rivende udvikling og nærmer sig mere og mere ANSI92 og ANSI99, hvorfor det ikke er ligegyldigt om det er en ældre version her er tale om. Dog tror jeg ikke at nærværende problem er versionsafhængigt.
Når jeg har skrevet dette rebooter jeg i Win98 miljø og afprøver det samme herunder, men jeg er på forhånd ret sikker på at der ikke er problemer.
Prøv at følge og selv afprøve de her skærmdumps fra kommandolinieprompten $. ________________________________________________
$ mysqladmin version mysqladmin Ver 8.9 Distrib 3.23.26-beta, for pc-linux-gnu on i686 Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license
Server version 3.23.26-beta Protocol version 10 _______________________________________________
$ echo \'CREATE TABLE karakter (navn text, efternavn text,level text)\' |mysql test ________________________________________________
$ mysqlshow test karakter Database: test Table: karakter Rows: 1 +-----------+------+------+-----+---------+-------+---------------------------------+ | Field | Type | Null | Key | Default | Extra | Privileges | +-----------+------+------+-----+---------+-------+---------------------------------+ | navn | text | YES | | | | select,insert,update,references | | efternavn | text | YES | | | | select,insert,update,references | | level | text | YES | | | | select,insert,update,references | +-----------+------+------+-----+---------+------- +---------------------------------+ __________________________________________________
$ echo \'insert into karakter (navn,efternavn,level) values(\"Jens\",\"Hansen\",1) \' |mysql test
Jojo, den var god nok i WIN98, se her. Kopier følgende linier til en \'bat fil.
echo Udvis omtanke inden næste linie !!!
ohce DROP TABLE IF EXISTS karakter |mysql -t -v test
mysqlshow -V
echo CREATE TABLE karakter (navn text, efternavn text,level int) |mysql -t -v test
mysqlshow test karakter
echo insert into karakter (navn,efternavn,level) values(\"Jens\",\"Hansen\",1) |mysql -t -v test
echo select * from karakter |mysql -t -v test
rem slut
og skærmdumps herunder:
C:\\test>mysqlshow -V C:\\MYSQL\\BIN\\MYSQLS~1.EXE Ver 8.2 Distrib 3.23.26-beta, for Win95/Win98 (i32)
C:\\test>echo CREATE TABLE karakter (navn text, efternavn text,level int) |mysql -t -v test -------------- CREATE TABLE karakter (navn text, efternavn text,level int) --------------
C:\\test>mysqlshow test karakter Database: test Table: karakter Rows: 0 +-----------+---------+------+-----+---------+-------+---------------------------------+ | Field | Type | Null | Key | Default | Extra | Privileges | +-----------+---------+------+-----+---------+-------+---------------------------------+ | navn | text | YES | | | | select,insert,update,references | | efternavn | text | YES | | | | select,insert,update,references | | level | int(11) | YES | | | | select,insert,update,references | +-----------+---------+------+-----+---------+-------+---------------------------------+
C:\\test>echo insert into karakter (navn,efternavn,level) values(\"Jens\",\"Hansen\",1) |mysql -t -v test -------------- insert into karakter (navn,efternavn,level) values(\"Jens\",\"Hansen\",1) --------------
C:\\test>echo select * from karakter |mysql -t -v test -------------- select * from karakter --------------
lagde lige mærke til at du forsøger at gemme værdien for level som et tal. Det virker også fint nok, hvis du har valgt typen varcah (mener jeg) men har du forsøgt med: INSERT INTO karakter (navn,efternavn,level) values (\"Jens\",\"Hansen\",\"1\") ? Det ville også være rart at vide lidt til dine datatype mv.
Mvh Christian
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.