Forum Delphi.cz

Delphi => Archiv => Téma založeno: dracekvo 29-07-2010, 15:33:00

Název: delphi myslq
Přispěvatel: dracekvo 29-07-2010, 15:33:00
Ahoj, mám tu další problém. je poněkud podivný.

Používám Delphi 7 a MySQL: 5.1.49-community

Zde je můj kód

Kód: [Vybrat]
Connection := TSQLConnection.Create(nil);
    Connection.DriverName := 'dbxmysql';
    Connection.GetDriverFunc := 'getSQLDriverMYSQL50';
    Connection.LibraryName := 'dbxopenmysql50.dll';
    Connection.VendorLib := 'libmysql.dll';
    Connection.Params.Append('Database=' + sqldatabase);
    Connection.Params.Append('User_Name=' + sqluser);
    Connection.Params.Append('Password=' + sqlpass);
    Connection.Params.Append('HostName=' + sqlhost);
    SQLQuery1.SQLConnection:= Connection;

    connection.Open;

    sqlQuery1.SQL.Text:= 'select id, eod, closed from barak';
    sqlQuery1.Open;

a tabulka
Kód: [Vybrat]
+--------------+-----------------------+------+-----+---------+-------+
| Field        | Type                  | Null | Key | Default | Extra |
+--------------+-----------------------+------+-----+---------+-------+
| id           | mediumint(8) unsigned | NO   | PRI | NULL    |       |
| site_country | varchar(1)            | NO   |     | NULL    |       |
| eod          | tinyint(1) unsigned   | NO   |     | NULL    |       |
| closed       | tinyint(1) unsigned   | NO   |     | 0       |       |
+--------------+-----------------------+------+-----+---------+-------+

teď, pokud dám select id, tak vše funguje v pohodě.
když select id, site_country napíše to "Invalid field size"
pokud tam dám třeba select id, eod tak vše taky v pořádku
a select *, nebo select id, eod, closed skončí chybou "Access violation at address 003444EF in module 'dbxopenmysql50.dll'. Read of address 00000001"
Název: delphi myslq
Přispěvatel: dracekvo 29-07-2010, 15:36:00
jo a malá ukázka dat
Kód: [Vybrat]
+----+--------------+-----+--------+
| id | site_country | eod | closed |
+----+--------------+-----+--------+
|  1 | 1            |   1 |      0 |
|  2 | 1            |   1 |      0 |
|  3 | 1            |   1 |      0 |
|  4 | 1            |   1 |      0 |
|  5 | 1            |   1 |      0 |
|  6 | 1            |   1 |      0 |
|  7 | 1            |   1 |      0 |
|  8 | 1            |   1 |      0 |
|  9 | 1            |   1 |      0 |
| 10 | 1            |   1 |      0 |
+----+--------------+-----+--------+
Název: delphi myslq
Přispěvatel: dracekvo 29-07-2010, 16:21:00
Tak jsem zjistil, že na PC, kde je win 2003 server a 5.1.28-rc-community to funguje. Mě na ntb s Win7 ne.
Zkusím nainstalovat starší MySQL. Zatím to berte jako vyřešené.
Název: delphi myslq
Přispěvatel: dracekvo 22-09-2010, 13:10:59
Tak jsem zjistil, že je to verzí mysql serveru. Na MySQL 5.1.50 to hází exception v knihově dbxopenmysql.dll už pri jednoduchém dotazu select * from tabulka.
Teď jsem nainstaloval nějaký 5.0.45 a tam to jde bez problému.

Napadá někoho proč se tak děje?
Název: delphi myslq
Přispěvatel: xyz3 22-09-2010, 13:28:00
"Read of address 00000001" znamená, že nějaký soudruh udělal chybu. U opensource konektorů do databáze běžný jev.
Název: delphi myslq
Přispěvatel: dracekvo 22-09-2010, 13:39:59
A nějaké doporučení jak se nakonektit k mysql?
Mě se nedaří najít ani kdo to napsal, jestli třeba nemám nějakou starou verzi a na stránkách nemá novější.
Název: delphi myslq
Přispěvatel: xyz3 22-09-2010, 14:11:00
Rovnou se na to vykašli. Pokud tvoříš nový projekt, tak MySQL stejně není ta správná volba.
Název: delphi myslq
Přispěvatel: dracekvo 22-09-2010, 14:33:00
To tvořím, ale potřebuju něco, s čím bude jednoduše komunikovat i php.
Název: delphi myslq
Přispěvatel: xyz3 22-09-2010, 14:46:00
A PHP umí jenom MySQL ? ;D
Ale každý svého štěstí strojvůdce, já nikoho přesvědčovat nebudu.
Název: delphi myslq
Přispěvatel: pf1957 22-09-2010, 14:52:00
dracekvo Napsal:

> To tvořím, ale potřebuju něco, s čím bude
> jednoduše komunikovat i php.

Ja bych tedy taky doporucoval si MySQL, kdyz to neni nutne, nic nezacinat :)

My jsme se k ni pred lety pripojovali pres ZEOS komponenty a nebyly s tim problemy. Akorat ze ZOES komponenty maji unikodifikaci ve stadiu alfa...

Název: delphi myslq
Přispěvatel: dracekvo 22-09-2010, 15:31:59
S čím jsem ještě dělal i v php tak bylo MsSQL, ale to je placený, ne?

Samozřejmě vím, že php dokáže dělat i s ostatníma databázema, ale nemám s nima žádné zkušenosti takže nemůžu posoudit co je nejvhodnější. Abych nedopadl ještě hůře, než s MySQL.
Název: delphi myslq
Přispěvatel: z_o_o_m 22-09-2010, 16:42:59
MySQL rulez, nikdy sem s tim nemel problemy :) ale jen s PHP ...

pokud neznas HeidiSQL, je to open-source Delphi projekt, treba v tom neco vyctes  8)
Název: delphi myslq
Přispěvatel: Mi.Chal 22-09-2010, 21:07:00
dracekvo Napsal:
-------------------------------------------------------
> S čím jsem ještě dělal i v php tak bylo MsSQL, ale
> to je placený, ne?

ma i free variantu, ktera ma urcita omezeni


Název: delphi myslq
Přispěvatel: Mi.Chal 22-09-2010, 21:08:00
z_o_o_m Napsal:
-------------------------------------------------------
> MySQL rulez

pokud mas na mysli nejakou soutez o nejblbejsi softwary, tak tam by se umistila na prednich pozicich
Název: delphi myslq
Přispěvatel: vinca 26-09-2010, 17:30:59
A. Co je špatného na driveru pro MySQL, který je součástí D7 ?
B. Mohli by páni experti zmínit vhodné databáze pro nové projekty, když je ten MySQL takový hnůj ?
V.
Název: delphi myslq
Přispěvatel: z_o_o_m 26-09-2010, 20:14:00
Mi.Chal Napsal:
> pokud mas na mysli nejakou soutez o nejblbejsi
> softwary, tak tam by se umistila na prednich
> pozicich

si asi pletes pojmy s dojmy ... sice nejsem databazovej expert, ale
mysql je plne funkcni a konkurencne schopna alternativa k placenym databazovym systemum,
podil mysql na trhu mluvi sam za sebe a pro bezny uziti uplne dostacuje

pokud vim, tak vetsina lidi nepotrebuje Oracle, nespravuje miliony tabulek a miliardy zaznamu
2 Vinca:
nekterych nazoru by sis opravdu nemel vsimat ;)
mysql je dost dobre pouzitelny, hodne rozsireny a nemusis se nekde hledat s nakou free osekanou variantou
Název: delphi myslq
Přispěvatel: z_o_o_m 26-09-2010, 20:16:00
jeste drobnost, pro pristup do MySQL se da pouzit vicero veci
viz.
http://delphi.about.com/od/mysql/tp/aatpmysql.htm
Název: delphi myslq
Přispěvatel: Mi.Chal 26-09-2010, 21:09:59
z_o_o_m Napsal:
-------------------------------------------------------
> si asi pletes pojmy s dojmy ... sice nejsem
> databazovej expert, ale
> mysql je plne funkcni a konkurencne schopna
> alternativa k placenym databazovym systemum,

s tim se da souhlasit, databazovy expert by tohle asi nikde netvrdil :)

> podil mysql na trhu mluvi sam za sebe a pro bezny
> uziti uplne dostacuje

hlavni problem mysql vidim v tom, ze standarnde se chova nestandardne a ma ruzne featury, ktere obcas i odporuji standardum. Typicky priklad je treba groupovani, viz
Kód: [Vybrat]
select column1, column2, column3
from table
group by column1, column2

To je proste nesmysl a normalni databaze to nevezme, Mysql ano. Bohuzel na tyhle parodii zacina spousta lidi a povazuje to pitome chovani za standard, pak se divi, kdyz ty dotazy jinde nefunguji. Dalsi perly jsou treba

insert into table(pole_s_datumem) values('30.2.1990')

Ten kram ve vychozim nastaveni afaik misto chyby vyhodi warning a do pole vlozi nejakou defaultni hodnotu.

Takhle by se dalo pokracovat asi jeste dlouho, nejake dalsi perly jsou myslim i ve vedlejsim db foru.

Název: delphi myslq
Přispěvatel: pf1957 26-09-2010, 21:59:00
z_o_o_m Napsal:
> podil mysql na trhu mluvi sam za sebe a pro bezny
> uziti uplne dostacuje

Je otazka, jestli to, co strikaji PHP strikaci, lze povazovat za bezne uziti databaze...
> nemusis se nekde hledat s nakou free osekanou
> variantou

zato pokud nedelas Open Source, tak si rovnou musis koupit komercni licenci ;)

Název: delphi myslq
Přispěvatel: pf1957 26-09-2010, 22:21:00
Mi.Chal Napsal:

> hlavni problem mysql vidim v tom, ze standarnde se
> chova nestandardne a ma ruzne featury, ktere obcas
> i odporuji standardum. Typicky priklad je treba
> groupovani, viz

Matne si vzpominam, ze jsem se pred lety v ramci jednoho OSS projektu pokousel implementovat upravy DB schematu, ktere bezne chodily napr. s PostgreSQL a marne: narazil jsem na vypinani/zapinani constraintu. Uz si to moc nepamatuju a je to pro me passe, ale odnesl jsem si z toho dojem, ze pricina byla v dodatecnem dolepeni referencni integrity, kdy si ta MySQL schovavala nektera metadata tak, ze se na ne nedalo dostat...
Název: delphi myslq
Přispěvatel: pf1957 26-09-2010, 22:23:00
vinca Napsal:

> B. Mohli by páni experti zmínit vhodné databáze
> pro nové projekty, když je ten MySQL takový hnůj

Zalezi, co od DB cekas/potrebujes a kolik jsi ochoten investovat...
Název: delphi myslq
Přispěvatel: mjseven 27-09-2010, 19:26:00
vinca Napsal:
> B. Mohli by páni experti zmínit vhodné databáze
> pro nové projekty, když je ten MySQL takový hnůj
> ?
> V.

Jako DB bych použil jednu z následujicích:  Firebird, PostgreSql nebo MSSQL. Záleželo by od zadání toho projektu.

Pro připojení komponenty Zeos.
S těma se můžeš připojit ke kterékoliv z uvedených, případně i k MySQL.

Název: delphi myslq
Přispěvatel: pf1957 28-09-2010, 21:15:00
mjseven Napsal:

> Jako DB bych použil jednu z následujicích:
> Firebird, PostgreSql nebo MSSQL. Záleželo by od
> zadání toho projektu.
>
> Pro připojení komponenty Zeos.
Ja bych s tim v podstate souhlasil: Firebird a PostgreSQL jsou spolu SQLite databaze skutecne zadarmo a do verzi pred Delphi 2009 tj. s ANSI stringy bych se pripojoval taky pres ZEOS. Pres ten se ostatne da pripojit i k tomu MSSQL, SQLite aj. a v ANSI verzich jsme s nimi nikdy nemeli problemy.

Ovsem:

Preferoval bych PostgreSQL, protoze patri do rodiny dospelych DB, jako je Oracle, IBM DB/2 a hojne a bezproblematicky se pouziva i na jinych platformach jako Java, Python, Ruby aj. Ale ZEOS pro unicode jsou jen ve verzi Alfa, takze bych musel koupit nejake komercni komponenty pro pripojeni k D2009+

Firebird je slusna DB, ale ma nektere exoticke vlastnosti, coz rekneme vyvazi, ze narozdil od PostgreSQL, existuje v embedded verzi. Ovsem co jsem videl, tak se pro seriozni nasazeni kupuji komercni komponenty napr. FIB+

MSSQL Express (nebo jak se to ted oficialne jmenuje) bych taky vydejchal, ale nakup komercni licence pro pripad, ze by mi aplikace nabobtnala, uz asi ne. Navic jsme proti MSSQL pouzivali asi 10 let bezproblemove ADO komponenty, ale letos jsme narazili na to, ze neumeji detekovat/ohlasit chybu v triggerech/SP, ktere lezou do jine DB, takze to znamena taky investovat do komercnich komponent.

--

Takze situace pro novejsi verze Delphi je pomerne neradostna. Snad pockat aspon na betu ZEOS komponent a rezignovat na MSSQL, protoze ZEOS pouzivaji nejakou zastaralou DBLib, ktera uz pro MSSQL 2008 neexistuje a nebo koupit komercni komponenty.