Mondi su mondi, sistemi di sistemi.

Diciamo no a MySQL

Pensierini della sera

Nei momenti di sciat­te­ria mi vien da pen­sare che in fondo, per la mag­gior parte degli usi, MySQL va più che bene. Sì, d’accordo, PostgreSQL è un’altra cosa ma sono dif­fe­renze che spesso non si vedono.

Poi mi capi­tano cose come quella che segue e capi­sco che è una sciocchezza.

Il fatto

C’è que­sta appli­ca­zione PHP+MySQL da met­tere in sicu­rezza, prima della riscrit­tura da zero. Provo alcune modi­fi­che in locale e, essendo tutto a posto, riporto gli aggior­na­menti sul ser­ver di deployment.

Verifico che fun­zioni tutto e noto alcune stra­nezze per cui ini­zio a fare tutte le pos­si­bili veri­fi­che ma sem­bra tutto a posto, fin quando provo l’SQL a mano e vedo che una query dà errore dicendo che la tabella è inesistente (????).

A que­sto punto guardo la docu­men­ta­zione di MySQL e sco­pro che:

In MySQL, data­ba­ses cor­re­spond to direc­to­ries within the data direc­tory. Each table within a data­base cor­re­sponds to at least one file within the data­base direc­tory (and pos­si­bly more, depen­ding on the sto­rage engine). Consequently, the case sen­si­ti­vity of the under­ly­ing ope­ra­ting system plays a part in the case sen­si­ti­vity of data­base and table names. This means data­base and table names are not case sen­si­tive in Windows, and case sen­si­tive in most varie­ties of Unix. One nota­ble excep­tion is Mac OS X, which is Unix-based but uses a default file system type (HFS+) that is not case sensitive.

A quel punto capi­sco: sto svi­lup­pando su Mac OS X e il ser­ver è Linux.

La morale della storia

Che dire? tutto que­sto è ridi­colo. Non so cosa dica lo stan­dard SQL: se il rife­ri­mento ai nomi debba esser case sen­si­tive o meno ma che una query smetta di fun­zio­nare a causa del sistema ope­ra­tivo sot­to­stante è vera­mente un deli­rio. Non vedo l’ora di man­dare in pen­sione que­sta applicazione!

Per proseguire

Commenti e trackback sono disabilitati.