- Everest / AIDA64 topik
- AMD Ryzen 9 / 7 / 5 / 3 3***(X) "Zen 2" (AM4)
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Iszonyatos mennyiségű hulladékkal járhat a Windows 10 terméktámogatásának vége
- Milyen monitort vegyek?
- Sok memóriát spórol a neurális textúratömörítés
- Jóárasított AI PC-ket szeretne látni az AMD
- TCL LCD és LED TV-k
- Milyen videókártyát?
- Vezeték nélküli fülhallgatók
Új hozzászólás Aktív témák
-
meone
tag
Sziasztok lenne egy nagyon alap kérdésem.
Feltetem az easyphp AMP csomagot és nincs meg adava benne a mysql-hez root jelszó és felhasználónév a config fájl ban, és ezt szretném meg kérdezni hogy mit kell be írni bele, hogy tudjam normálisan használni mert addig nem tudok semmi féle mysqlconetet végrehajtani.
Tudod hogy alap kérdés de a beállítás hoz nem nagyon értek és elrontani meg nem nagyon akarom. Köszi előre is. -
Protezis
őstag
-
Protezis
őstag
Igen, azt hiszem egyre gondolunk.
Idokozben megegy problema:
uzenet tabla: id, szoveg, datum
felhasznalo_uzenet tabla: id, kuldo_id, cimzett_id, uzenet_id stb.
Uzenet kuldesekor letrejon egy bejegyzes az uzenet tablaban. Az uzenet.id auto_increment. Ezutan a felhasznalo_uzenet tablaban el kell tarolnom, hogy ki, kinek kuldte az adott uzenetet. Ehhez pedig szuksegem van az elobb eltarolt uzenet id-jere. Ezt hogy kaphatom meg? (nem szeretnek buveszkedni, mint pl. utolso uzenet id-je // lehet azt mar mas irta)
[Szerkesztve] -
cucka
addikt
válasz
Protezis #393 üzenetére
a kapcsolótáblában eltárolhatod, hogy pl. berakta-e a kukába a levelet a júzer. amikor véglegesen törlődik, akkor meg törölheted azt a sort a kapcsolótáblából. ezen kívül törlésnél célszerű ellenőrizni, hogy az éppen törölt levélre hivatkozik-e még valamelyik sor a kapcsoló táblából, mert ha nem, akkor törölhető az is.
-
föccer
nagyúr
Üdv.
Lenne 2 kérdésem.
1: hogyan tudok csak olvasási jogokkal rendelkező felhasználót létrehozni (gondolok itt a select-re). Itt:
[link] próbáltam utánna nézni, csak nem nagyon tudtam kihámozni, hogy nekem mire van szükségem
2: Egy adatbázisból lekérdezek néhány infót. Egyesével töltögetem ki a szükséges táblázatot, viszont az adatbázisból vett adatok nem azok, ami nekem kell, hanem valami visszatérési érték. Ez miért van, illetve hogyan lehetne tenni ellene
Neve: Resource id #8
Irányítószáma: Resource id #9
Lakhelye: Resource id #10
Címe: Resource id #11
E-mail címe: Resource id #12
Telefonszáma: Resource id #13
Az Terméket fogyasztja: Resource id #14
Sikere: Resource id #15
Kód, amivel kiiratom:
print(''<table border=\''1\''>\n'');
$sql = ''select NEV from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Neve:</td><td>$eredmeny</td>'');
$sql = ''select IRSZAM from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Irányítószáma:</td><td>$eredmeny</td>'');
$sql = ''select TELEPULES from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Lakhelye:</td><td>$eredmeny</td>'');
$sql = ''select CIM from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Címe:</td><td>$eredmeny</td>'');
$sql = ''select EMAIL from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>E-mail címe:</td><td>$eredmeny</td>'');
$sql = ''select FELEFON from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Telefonszáma:</td><td>$eredmeny</td>'');
$sql = ''select FOGYASZTJA from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Az Terméket fogyasztja:</td><td>$eredmeny</td>'');
$sql = ''select SIKER from distributorok where ID = $_GET[id]'';
$eredmeny = mysql_query($sql, $sql_csatlakozas) or
die (print(''Nem sikerült a műveletet végrehajtani. A hiba oka: ''.mysql_error()));
print(''<tr><td>Sikere:</td><td>$eredmeny</td>'');
print (''</tr>'');
print(''</table>\n'');
Köszöm a segítséget -
Protezis
őstag
De ebben az esetben is el kell tarolnom a kapcsolotablaban, hogy a felado torolte -e, illetve a cimzett torolte -e. Teljesen hasonloan a megnezett mezobol is ketto kell - bar ez talan felesleges, a felado ugyis megnezte.
(Ugyanis mind a kuldott, mind a fogadott uzeneteket meg akarom jeleniteni egy adott felhasznalonal.)
Jol gondolom, vagy valamit benezek?
[Szerkesztve] -
cucka
addikt
válasz
Protezis #390 üzenetére
első változat nem jó, mert nagyon sok fölösleges adatot tárolsz.
második nem jó, mert kizárod a lehetőségét az esetleges több címzettes levélnek
szerintem a harmadik, középutas megoldás a jó:
van egy kapcsoló táblád a levél, a küldő és a fogadó között, amiben a köv mezők vannak:
kuldo_id, fogado_id, level_id, megnezett, torolt.
első három külső kulcs és a megfelelő táblában mutat egy sorra, utolsó kettő flag.
ehhez kell egy levél tábla, ahol a levelek szövege/tárgya/stb. található, mindegyik levél egyszer. ez a legrugalmasabb megoldás, mert támogatja a sok címzettes üzenetküldést, mindenkinek tudsz készíteni sok funkcióval rendelkező postaládát a kapcsoló tábla bővítésével (pl. ilyeneket hogy mikor nézte meg a levelet, kukába rakta-e vagy törölte, stb.) ugyanakkor minimálisra csökkenti a redundanciát. -
Protezis
őstag
Adatbazisban tarolt felhasznalok egymasnak uzeneteket kuldhetnek. Ezeket az uzeneteket ugyancsak adatbazisban tarolom.
A kovetkezo problemaba botlottam: ha egy felhasznalo ki szeretne torolni egy korabban altala elkuldott uzenetet, azt nem torolheti az adatbazisbol, ugyanis akkor a cimzett se olvashatna el tobbe azt az uzenetet. Persze forditva is hasonlo a helyzet.
2 megoldas jutott eszembe:
a) 2 tablat hasznalok. Egyet az elkuldott uzenetekhez, egyet a fogadott uzenetekhez. Ez sajnos nagyfoku redundanciat jelent, ugyanis minden uzenet 2-szer van tarolva, de egyszeru a torles megvalositasa.
b) 2 mezot hasznalok annak tarolasara, hogy a kuldo, illetve a fogado torolte -e a levelet. Ekkor minden torlesnel ellenoriznem kell, torolte -e mar a masik fel korabban a levelet. Ha igen, akkor tenyleg torolhetem a bejegyzest, ha nem, akkor a megfelelo mezoben toroltre allitom a levelet.
Bar a b) verziot tartom jobb otletnek, kivancsi vagyok ti mit gondoltok. Ha van mas otletetek, azt is szivesen veszem. -
vancha2
aktív tag
válasz
Louloudaki #388 üzenetére
THX
-
shev7
veterán
válasz
Louloudaki #386 üzenetére
ha primary key vagy unique
-
Louloudaki
aktív tag
-
vancha2
aktív tag
válasz
Louloudaki #383 üzenetére
Köszi a segítséget neked és Lortech-nek is, így már működik.
Még egy utolsó kérdés: hogy tudom azt leellenőrizni, hogy a beírt email címet tartalmazza-e az adatbázis, mert ha igen akkor nem venném fel mégegyszer. -
Louloudaki
aktív tag
válasz
Louloudaki #382 üzenetére
utsó sor mod:
ALTER TABLE `x` CHANGE `id` `id` TINYINT( 1) UNSIGNED NOT NULL AUTO_INCREMENT
[Szerkesztve] -
Louloudaki
aktív tag
1. amikor létrehozod a a táblát, adatbázis adminisztrátorban bejelölöd. pl phpmyadminban az extra alatt van legördülőben.
2. utólag jelölöd be (szintén phpmyadmin pl: ceruza a kívánt oszlopnál, és extra alatt ugyanúgy kiválaszt)
3. ha nem használsz adminisztrátor progit:
- tábla létrehozása
CREATE TABLE `x` (
`id` TINYINT( 1 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`x` VARCHAR( 10 ) NOT NULL
) ENGINE = MYISAM ;
- tábla módosítása
ALTER TABLE `x` ADD PRIMARY KEY(`id`); -
Lortech
addikt
Én is észrevettem, hogy akkor minden sorhoz hozzáad egyet, de sikerült magamtól is kiegészíteni.
Jól van na, zsenikém.
Igen, épp erre írtam, hogy a kód jó, csak a z adatbázis háttérnek is passzolnia kéne.
Mivel insertnél csak az email mezőt adod meg, ezért az id automatikusan 0-t kap, az íródik be, viszont id-nél vsz megkövetelted az egyediséget, kulcsnak állítottad be, ezért második alkalommal már nem engedi hogy 0-t tegyél bele, mivel akkor két 0 id-s sor lenne. Ezért kéne auto_increment tulajdonságot megadni az id mezőre. Így ''insert into tabla (email) values ('$email')''; parancsnél az id automatikusan a következő értéket veszi fel, és nem lesz duplikáció. -
vancha2
aktív tag
Én is észrevettem, hogy akkor minden sorhoz hozzáad egyet, de sikerült magamtól is kiegészíteni.
Az első alkalommal működik az űrlap, jól fölveszi az adatbázisba, de második alkalommal már ezt a hibaüzenetet kapom:
mysql_query(): MySQL error: Duplicate entry '0' for key 1 in /nfs/extra/v/vc/vcsabi/wwwroot/proba/hirlevel.php: mysql_query on line 61
in /nfs/extra/prepend/prepend.php(187) : system created function on line 32
Ez most mit jelent? Még egy rekordot akar felvenni ugyanazzal az id-val minta ami az előzőnek van? -
Lortech
addikt
parnacs - parancs ? Bár ezt valószínűleg csak most írtad el.
Hibaüzenet volt? Vagy csak nem csinálta amit kell?
A kód működőképes, de megfelelő működéshez a környezetnek (főleg adatbázisnak) passzolnia kell. echo mysql_error(); dob valamit?
$email változót írasd ki, hogy átjött-e.
Ja még az előzőben az updatehez kell egy where id = x, mert így minden sor letoltve mezőjéhez hozzáad egyet.
szerk: Lassú voltam.
[Szerkesztve] -
cucka
addikt
az első sorban elírtad a változó nevét ($parnacs) :)
egyébként szerintem ez jónak tűnik (leszámítva persze azt, hogy nincs levédve az, amit az adatbázisba insert-elsz). ha mégsem működik, első körben irasd ki az sql query-det, onnan látni fogod, mi a gond.
esetleg az okozhat még gondot, ha mondjuk a tábládban az id oszlop not null-ra van állítva és nem auto increment-es, akkor elvileg mysql hibát kell kapjál. ennek kiderítésére (és úgy általában az sql hibák feltárására a következő módon érdemes query-ket futtatni:
mysql_query($parancs) or die (mysql_error()); -
vancha2
aktív tag
Köszi ez így tök jól működik!
Viszont van még valami, amit nem tudok: van egy űrlapom, abban egy szöveges mező, amink a neve email. Ezt küldöm át a php fájlnak, és amit a szöveges mezőbe írnak email címet, azt fölveszi az adatbázisomba. A táblámban van egy id és egy email nevű mező. Ezt sikerült összehoznom, de nem működik:
$email = $_POST['email'];
$parnacs = ''insert into tabla (email) values ('$email')'';
mysql_query($parancs);
Mi benne a hiba?
[Szerkesztve] -
vancha2
aktív tag
Lenne 2 kérdésem:
1. Van egy adattáblám ebben 3 mező: id, link, letoltve.
Hogy tudom ebből például a 2. rekordnak a letöltve mezőben levő értékét lekérdezni, és kiírni php-val? (az id alapján)
2. Hogy tudok php-ból ennek az értékéhez hozzáadni egyet?
Előre is köszönöm a segítséget -
garfield-r
tag
Üdv mindenkinek!
Lenne egy nem szokványos kérdésem: hol találhatok értelmes, magyar nyelvű anyagot ehhez a témához: SQL Server Client Network UtilityMert most töltöm a szakmai gyakorlatomat egy programozó cégnél és itt ezt a témát adták ki nekem, h írjak róla jópár oldalt, amit majd le kell adnom a fősulimon....
Na szóval a nagy gondom az h magyarul se nagyon tudom h pontosan mit takar a cím + a Microsoft oldalát már végignztem és ott nem találtam semmit ami jó lehet első ránézésre mert ott az SQL Server 2000, 2005 és 2008-at ismerttették ezerrel... -
zeix
senior tag
Érdeklődnék, hogy hogyan tudnám kiszűrni a duplán szereplő adatokat egy adatbázisban?
Előre is köszönöm. -
Jester01
veterán
válasz
VladimirR #365 üzenetére
A mező collation legyen BINARY. Ha ez még mindig nem elég, akkor add be hexában.
mysql> create table t(hash char(20) BINARY);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t values (0xC3A9);
Query OK, 1 row affected (0.00 sec)
mysql> select hex(hash) from t;
+-----------+
| hex(hash) |
+-----------+
| C3A9 |
+-----------+
1 row in set (0.00 sec) -
VladimirR
nagyúr
válasz
VladimirR #362 üzenetére
ehh, naszoval tenyleg koran van meg
szoval az a gond, hogy ha egy lekerdezesben akarok adatbazisba illeszteni egy usernevet es egy jelszohoz tartozo binaris sha1 hash-t, akkor az egyik nem fog latszani, attol fuggoen, hogy a kapcsolategyeztetes be van-e allitva utf8-ra -
Lortech
addikt
válasz
VladimirR #360 üzenetére
Korán van még, lehet ezért nem világos.
Egy hash esetén miért kéne hogy átkódold, és helyesen jelenjeg meg az adatbázisban, vagy bármi átalakítást végezz rajta? Ezesetben szvsz az a legjobb, ha nem csinálsz vele semmit, úgy rakod az adatbázisba, ahogy legeneráltad, így kivételkor sem kell odafigyelni, hogy visszaalakítsd, mert (gondolom későbbi összehasonlítás céljából tárolod el a hasht) az összehasonlítandó hash is ebben a kódolásban van. -
VladimirR
nagyúr
probalok adatbazisba helyezni egy csunya string-et az adatbazishoz
a string azert csunya, mert a sha1( "idejonvalami", true ); fuggveny eredmenye, vagyis mindenfele karakterek vannak benne
a gond az, hogy nem akar sikerulni, nem azt teszi be, amit kellene
a problema abban leledzik, hogy az adatbazis utf8-as es en ennek megfeleloen az adatbazis-kapcsolat letrehozasa utan beallitom a character set es a names valtozokat utf8-ra
mysql_query( "SET CHARACTER SET utf8;" );
mysql_query( "SET NAMES utf8;" );
ha viszont ezt nem tesz meg, akkor a fentebb kifogasolt problema megszunik, a karaktersor megfeleloen kerul az adatbazisba
ekkor eppen csak az ekezetes karaktereim nem tudnak madukkal mit kezdeni
van erre valami megoldas azon kivul, hogy 20 helyett 40 byte-on tarolom az sha1 hash-eket? -
Forest_roby
őstag
válasz
Forest_roby #358 üzenetére
vagy varbinary pontosabban! és műxik is!!
mysql> select loginName, user_id from users where loginName='bUCO';
Empty set (0.00 sec)
mysql> select loginName, user_id from users where loginName='Buco';
+-----------+---------+
| loginName | user_id |
+-----------+---------+
| Buco | 3 |
+-----------+---------+
1 row in set (0.00 sec)
mysql> -
tkazmer
addikt
válasz
Forest_roby #356 üzenetére
Ez a szerver verziójától függ. Nekem a saját szerveremen szintén nem tesz különbséget a kis és nagybetűk között, ellenben az extra.hu-n már megkülönbözteti őket.
-
Forest_roby
őstag
Most hirtelenjében szívinfarktust kaptam, olyan hibát vettem észre.
Ez, hogy - hogy működik:
mysql> select loginName, user_id from users where loginName='bUCO';
+-----------+---------+
| loginName | user_id |
+-----------+---------+
| Buco | 3 |
+-----------+---------+
1 row in set (0.00 sec)
mysql>
Miért érzéketlen a kis és nagybetűkre az adatbázisom?
És hogy lehet ezt a problémát megoldani?
Vagy ennek a select -nek így kell működnie?
Előre is köszi!
Forest -
Protezis
őstag
Az alabbi txt fajlban ([link])
talalhato egy 3 tablas adatbazis.
Lent talalhato 3 lekerdezes, melyek ugyanazt az eredmenyt adjak. Az lenne a kerdesem, hogy melyik gyorsabb, jobb, hatekonyabb stb.?
(eletszerubb adatok nem jutottak eszembe)
[Szerkesztve] -
alcsapalcsa
tag
lehet teljesen off a kérdés, de azt sem tudom, hogyan keressek rá a topicok között. ha nagy gáz a kérdés itt, akkor elnézést!
olyan szolgáltatót keresek, ahol ha több mysql adatbázist lehet létrehozni, de nem külön adatbázisonként számláznak, hanem mondjuk méret alapján, tehát kapok 10-20Mb-ot és abban létrehozhatok akár 3-4 adatbázist is. tud vki ilyet? elnézést a buta kérdésért és valszeg a rossz helyen feltettért.... -
cucka
addikt
duplicate entry for key azt jelenti, hogy van egy unique meződ, amibe insertnél már meglévő dolgot szeretnél pakolni, vagyis ettől már nem lenne unique.
elvileg ha utf8 van mindenhol, akkor nem kéne ilyen karakterkódolási probléma előjöjjön. ha az adatbázis utf8as, akkor valószínüleg a phpmyadmin kódolása lesz elrontva.. -
RedAnt
aktív tag
válasz
vakondka #340 üzenetére
Azzal semmi baj nincs, ld. [link] - SQL-92 szabvány, mysql támogatja.
emitter: ilyen hiba akkor van, amikor egy utf-8-ban kódolt 'é' karaktert iso-8859-1-ként próbálnak értelmezni, de ha a phpmyadmin és a böngésződ is utf-8-ra van állítva, akkor passz... Esetleg ellenőrizd, milyen content-type headert kapsz.
[Szerkesztve] -
vakondka
őstag
Szia,
Itt valami nagyon nem stimmel...két meződ van, egy word és egy count nevű ebben a táblában ?
Mert ha igen, akkor csak az első insert a helyes, a töbinek hiányzik az eleje.
INSERT INTO `search_total` ( `word` , `count` ) VALUES ('menüpont', 0.30103);
INSERT INTO `search_total` ( `word` , `count` ) VALUES ('megszünik', 0.30103);
stb..
ja igen, és kell a pontosvessző is az insert-ek közé.
[Szerkesztve] -
emitter
őstag
(Importálás helyett) phpmyadminban sql-parancs futtatásához bekopiztam a db-m tartalmát, erre ezt kapom:
Hiba
SQL-kérés:
--
-- Dumping data for table `search_total`
--
INSERT INTO `search_total` ( `word` , `count` )
VALUES (
'menüpont', 0.30103
), (
'megszünik', 0.30103
), (
...
MySQL jelzi: Dokumentáció
#1062 - Duplicate entry 'még' for key 1
Ez mit akar jelenteni? És főleg mi ez a még cucc, mikor én mindenhol utf8-at használtam (az sql-tartalom másolásakor is; az adatbázisom is utf8-at használ, és a phpmyadminban is erre van állítva; böngésző szintén..) -
emitter
őstag
Megoldható valahogyan, hogy egy meglevő adatbázisban a táblák karakterkódolását megváltoztassam? phpmyadminnal próbálkozom, de nem látok ilyen lehetőséget..
-
Tyrael
senior tag
ha az ftp-vel elersz egy olyan mappat, ami webrol elerheto, akkor oda feltoltod a phpmyadmin-t, majd ezutan weben keresztul phpmyadminba belepsz, es nyomsz egy exportot.
ehhez persze rendelkezned kell a kivant adatbazishoz felhasznaloi fiokkal.
illetve ha az adott felhasznaloi fiokhoz engedelyezve van a tavoli eleres, akkor barmilyen db klienssel tudod tavolrol kezelni az adatbazist.
mi a cegnel az EMS-t favorizaljuk.
Tyrael
[Szerkesztve] -
emitter
őstag
válasz
paramparya #334 üzenetére
aham, köszi
sajnos nem férek hozzá az adatbázishoz..
És semmi workaround nincs erre? -
emitter
őstag
hali!
Ha csak ftp-hozzáférésem van egy szerverhez, akkor arról hogyan tudom lementeni az adatbázist? phpMyadmin-t próbáltam felrakni rá, de a telepítésnél kéri, hogy egy config php-t másoljak a docroot-ba, namost ezt hogyan??
Vagy más ötlet mysql dumpolásra
thx -
emitter
őstag
válasz
VladimirR #329 üzenetére
köszi
lenne egy újabb kérdésem, hogyan tudom a mysql-daemont más user nevén indítani? root-ként akarom, de ezt írja:
emitter@LAPTOP:/var/www$ mysqld --user=root
070121 21:34:07 [Warning] Ignoring user change to 'root' because the user was set to 'mysql' earlier on the command line
és mysql névvel indítja.. -
emitter
őstag
hi,
miért nem akarja az igazságot ez a vack?
emitter@LAPTOP:~$ /usr/local/mysql/bin/mysql --user=root --password=jelszo
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.2.0-falcon-alpha MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database teszt;
Query OK, 1 row affected (0.02 sec)
mysql> \u teszt;
ERROR 1049 (42000): Unknown database 'teszt;'
[Szerkesztve] -
alitak
senior tag
Ha boolean típust szeretnék, akkor használjam a tinyint típust?
-
Tyrael
senior tag
válasz
Tele von Zsinór #324 üzenetére
konkretan erre gondoltam:
How to Recover deleted records?
Oct 18th, 2001 10:40
Joshua Bug, Xiaojing Li,
Can't be done.
Tyrael -
Tyrael
senior tag
válasz
Tele von Zsinór #320 üzenetére
milyen tipusu adatbazist hasznalsz?
myisam, innodb, ...?
Tyrael -
Tele von Zsinór
őstag
válasz
Tele von Zsinór #320 üzenetére
up! senki?
-
Tele von Zsinór
őstag
Adott egy tábla, amiből sikerült törölni pár rekordot, ami mégis kéne. Belenéztem a fileokba, még benne van, phpmyadmin is jelzi, hogy van benne adat, ami már törölve lett, de még foglalja a helyet.
Van-e valami mód arra, hogy ezeket a rekordokat visszanyerjem? A szöveges info még egy dolog, de a számok, dátumok..., szal minden, amit binárisan tárol, az (szemre) nem triviális módon tárolódik. -
Jester01
veterán
válasz
VladimirR #318 üzenetére
A biztosabbat úgy értettem, hogy így csak kisebb mértékben bízod a query optimizer-re a döntést. A két egyszerû lekérdezésnél (RedAnt javaslatával) valószínû, hogy 2 index lookup lesz az egész. Elvileg az optimizer is ezt adja és úgy megtakaríthatsz egy parancsfeldolgozást. Persze csak ha bízol benne
Ami a varchar-t illeti valóban igazad van. Mondjuk egy ilyen utalást találtam azért a leírásban: ''Remember that MySQL may treat VARCHAR columns as if they're CHAR columns, in which case the fixed format is used.'' De fogalmam sincs mire céloz. -
VladimirR
nagyúr
válasz
Jester01 #314 üzenetére
kosz a valaszt (RedAnt, neked is)
varchar -nak a rekordban van foglalva hely (a maximális hossznak)
amennyire tudom, a varcharnak pont ez a lenyege a char-ral szemben, hogy nincs szamara a maximalis hossz lefoglalva, csak a hossz + 1 byte (ujabban (mysql5-tol talan), ha a varchar hossza nagyobb, mint 255 karakter, akkor lehet hossz + 2 byte is)
alter table tablanev add index ( mezo1 ).|. table tablanev add index ( mezo2 );
most latom csak, a ph motor kiszurte a lekerdezest, az ott eredetileg nem egy ''pocs'' volt, hanem egy masik alter (amennyire eszrevettem, ha a kovetkezo karaktersor van, akkor az atalakul .|. karakterekke: ; sqlparancs
ha van ket tablam van-e kulonbseg sebessegben, memoriahasznalatban az alabbi ketto kozott:
miert biztosabb es mit ertesz ezalatt?
(egyebkent most latom csak, hogy ezt meg en irtam el: a masodiknak ez a vege: tabla1.name = 'nev' -
RedAnt
aktív tag
válasz
Jester01 #314 üzenetére
ha van ket tablam van-e kulonbseg sebessegben, memoriahasznalatban az alabbi ketto kozott:
Ránézésre nincs (feltéve, hogy van index mind a 2 lekérdezéshez). De az első a biztosabb.
még annyit tennék hozzá hogy az első esetnél, ha egy konkrét sorra keresel a név alapján, akkor distinct-el érdemes és limit 1-gyel, így az első találatnál leáll, és használja az indexeket teljes tábla-scan helyett akkor is ha alapból figyelmen kívül hagyná. Forrás: [link] -
alitak
senior tag
Van olyan mysql parancs, amivel már meglévő táblához tudok hozzátenni még1 oszlopot?
-
Jester01
veterán
válasz
VladimirR #311 üzenetére
egy up a kesonkeloknek
mi a kulonbseg a varchar es a text adattipuxok kozott
varchar -nak a rekordban van foglalva hely (a maximális hossznak), text esetén csak a hossza és egy pointer van eltárolva. Ez utóbbi egy külön területre mutat. A text ezért lassabb, de kevesebb helyet foglal.
mi az az index prefix length
Az index csak ennyi karaktert használ. Az olyan értékeket amik ezen hosszig megegyeznek azonosnak tekinti. A lekérdezéskor a látszólag egyező értékekre még egy szűrés fut.
mi a kulonbseg szoveges (varchar, text) mezo eseteben a sima index es a fulltext index kozott?
Fulltext indexben mindenféle vicces módon lehet keresni (MATCH ... AGAINST), sima indexben csak összehasonlítás van (kisebb-nagyobb-egyenlő).
hogy jobb index-et kesziteni? melyiknek mik az elonyei, hatranyai?
-a) alter table tablanev add index ( mezo1, mezo2 );
-b) alter table tablanev add index ( mezo1 ).|. table tablanev add index ( mezo2 );
Ez a két eset nem ekvivalens. Az első esetben mezo2-re nincs index (ha az adott adatbáziskezelő jobbról használja az összetett indexeket - ellenkező esetben mezo1-re nem lesz index). Ha mindig mind a két mezőre van szűrés, akkor az első módszer jobb lesz. Ha viszont a két mezőre külön-külön is akarsz keresni akkor a másodikra van szükséged. Plusz ha UNIQUE feltételed is van, akkor az első esetben a (mezo1, mezo2) pároknak kell egyedinek lenni, míg a másodikban a mezo1 és mezo2 értékeknek külön-külön.
MOD: szóval az összetett indexet (az adatbáziskezelőtől függően jobbról vagy balról) tetszőleges hosszig lehet használni. Pl. a (mezo1, mezo2, mezo3) indexet lehet (mezo1), (mezo1, mezo2), (mezo1, mezo2, mezo3) indexként is használni.
ha van ket tablam van-e kulonbseg sebessegben, memoriahasznalatban az alabbi ketto kozott:
Ránézésre nincs (feltéve, hogy van index mind a 2 lekérdezéshez). De az első a biztosabb.
Ha valahol hülyeséget írtam, javítsatok ki
[Szerkesztve]
[Szerkesztve] -
VladimirR
nagyúr
egy up a kesonkeloknek
-
VladimirR
nagyúr
válasz
VladimirR #311 üzenetére
meg egy kerdes:
ha van ket tablam van-e kulonbseg sebessegben, memoriahasznalatban az alabbi ketto kozott:
1:
select id from tabla1 where name = 'nev';
ezt bepakolom egy valtozoba
select count( id ) from tabla2 where tid = valtozo;
2:
select count( id ) from tabla1 inner join tabla2 on tabla1.id = tabla2.tid where tabla1.id = 'nev';
azert kerdezgetek ennyi hulyeseget, mert nem egy kimondott izomgep-re keszulok attenni az adatbazist, ahol szamitani fog, hogy igazan jol legyenek belove maga az adattarolas is es a lekerdezesek is
segitsegeteket elore is koszonom -
VladimirR
nagyúr
hi
valaki meg tudna magyarazni nekem, hogy:
-mi a kulonbseg a varchar es a text adattipuxok kozott, leszamitva a meretuket, illetve azt, hogy utobbinal csak ugy keszitheto index, ha megadom az ''index prefix length''-t?
-mi az az index prefix length?
-mi a kulonbseg szoveges (varchar, text) mezo eseteben a sima index es a fulltext index kozott?
-hogy jobb index-et kesziteni? melyiknek mik az elonyei, hatranyai?
-a) alter table tablanev add index ( mezo1, mezo2 );
-b) alter table tablanev add index ( mezo1 ).|. table tablanev add index ( mezo2 );
manualt olvasgattam, de ezekre nem kaptam belole szamomra ertheto valaszt -
Jester01
veterán
-
Haok
tag
Próbálkozok SQl el de nem nagyon megy
CREATE TABLE ME
(
ID INTEGER NOT NULL,
NEV VARCHAR2(10 BYTE) NOT NULL
);
CREATE TABLE TERMCSOP
(
ID INTEGER NOT NULL,
NEV VARCHAR2(20 BYTE) NOT NULL,
SZULO INTEGER
);
Így kezdődik, és ilyen hibát dob, amikor indítanám:
''You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR2(10 BYTE) NOT NULL
);
CREATE TABLE TERMCSOP
(
' at line 9''
Mi lehet a gond? -
Jester01
veterán
válasz
VladimirR #305 üzenetére
delete from posts where topicid not in (<halmaz>)
Szerintem semmi baj nincs ezzel a megoldással. Gondolom a <halmaz> egy al-select, jelen esetben tehát valami ilyesmi lesz a parancs:
delete from posts where topicid not in (select topicid from topics)
Alternatív módszer:
delete from posts where not exists (select * from topics where topics.topicid = posts.topicid)
Az explain parancs által adott infók alapján nekem úgy tûnik, hogy az elsõ a gyorsabb. Ha van index a topics.topic_id mezõre, akkor azt mind a két verzió kihasználja. -
VladimirR
nagyúr
hi
adott egy forum, ket (tobb, de most csak ketto szamit) tablaval, a topic-ok es a hozzaszolasok tablajaval
elobbiben vannak a topic adatai (id, cim, nyitas ideje, nyito, kategoria, etc...), utobbiban a hozzaszolasok (id, hozzaszolo id-je, topic id-je, etc)
mivel nem sajat forumrol van szo, igy a torlest eleg erdekesen kellene megoldanom ,megpedig ugy, hogy ha eltunik egy topic, vagyis eltunik egy sor a topic-ok tablajabol, akkor torlom a benne levo hozzaszolasokat (vagyis a megfelelo topicid-vel rendelkezo sorokat a hozzaszolasok tablajabol
hogyan lehet ezt a leginkabb fajdalommentesen megoldani?
az sajnos nem megoldhato, hogy mielott torlom a topic-ok tablajabol a sort, torlom a hozza tartozo post-okat, mindenfele okok miatt (foleg, mert fel evre visszamenoleg kellene megoldanom a torolt topic-ok post-jainak torleset es megeshet, hogy a jovoben is lesz hasonlo)
ami eddig eszembe jutott, az az, hogy a topicid-k bol halmazt kepzek, majd azt mondom, hogy ''delete from posts where topicid not in (<halmaz>)''
ez mennyire elfogadhato megoldas, van-e ettol szebb, jobb, gyorsabb
segitsegeteket elore is koszonom -
9CS
senior tag
Szia
A signed tinyint -128-127-ig számoz, de akkor sem lenne jobb, ha unsigned lenne, mivel az is csak 255, válassz szerintem nagyobb integer értéket az azonosítóknak. Főleg mivel törlés után is tovább számoz, így az évek során könnyű túllépni azt a tinyint-et. MySQL manual: [link] -
taklasz
tag
Sziasztok!
Van egy tábla, ami a 127-es számú user_id-től többet nem hajlandó elfogadni.
Egy űrlapon keresztül töltöm fel.
Kipróbáltam már több ingyenes tárhelyen is, egyiken sem számol tovább.
Mi lehet a gond a táblámmal?
CREATE TABLE `list` (
`user_id` tinyint(5) NOT NULL auto_increment,
`email` varchar(40) NOT NULL default '',
`name` varchar(40) NOT NULL default '',
`approved` char(1) NOT NULL default 'N',
PRIMARY KEY (`user_id`),
UNIQUE KEY `email` (`email`)
) TYPE=MyISAM AUTO_INCREMENT=20 ; -
krokk
senior tag
ha parancsra gondoltál:
''select nev from nick;'' evvel kiirja szépen sorban ha rendezni is akarod akkor ''order by asc'' a táblanév után. a tábla elnevezése meg nem épp nyerő. jah és ez csak a neveket írja ki.
de ezek alap dolgok. szerintem keress vmi netes olvasmányt. van nagyon sok.
Új hozzászólás Aktív témák
Hirdetés
- Ne legyetek bátorak, ha ezt a rollert választjátok - OOTD T10
- Honor 200 Pro - mobilportré
- Allegro vélemények - tapasztalatok
- Everest / AIDA64 topik
- Nyaralás topik
- BestBuy topik
- Mr Dini: Mindent a StreamSharkról!
- AMD Ryzen 9 / 7 / 5 / 3 3***(X) "Zen 2" (AM4)
- Futás, futópályák
- Samsung Galaxy S23 Ultra - non plus ultra
- További aktív témák...
- Új és régi konzolok Okosítása/Softmodoloása, és Szoftveres szintű javítása - RÉSZLETEK A LEÍRÁSBAN
- Bowers/Wilkins PX8 fejhallgatók (dupla Bluetooth eszköz csatlakoztatása!) (ELKELT)
- BESZÁMÍTÁS! 850W ASUS ROG STRIX 80 PLUS Gold White Edition (90YE00A4-B0NA00) 3 év garancia 27% áfa
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9800X3D 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Samsung Galaxy A32 4G 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest