Mirmo Dynamics

Si tu kiffes pas reunoi, t'écoutes pas et puis c'est tout.

To content | To menu | To search

Keyword - sql

Entries feed - Comments feed

Tuesday 14 November 2006

MySQL, Interclassement et Recherche

Sur une colonne en interclassement utf8_bin, une recherche de type LIKE sera case sensitive (sensible à la casse) par défaut (je n'ai pas cherché / trouvé de moyen d'inverser ce comportement). Alors que sur un interclassement utf8_unicode_ci, la recherche se fait en mode case insensitive (insensible à la casse), à moins d'employer la syntaxe LIKE BIN 'needle'.

Friday 15 September 2006

A méditer

(13:00:26) Geoffrey: disons que le sql
(13:00:30) Geoffrey: plus t'en fais, moins t'en fais

Thursday 31 August 2006

Accès à la base de données: Zend_Db

Arrive fatalement un moment dans un projet où le besoin d'attaquer sauvagement une base de données se fait sentir. Peu importe le SGBD utilisé, les besoins de base sont souvent les mêmes et se résument bêtement a ce que certains appellent les CRUD actions, c'est à dire Create, Read, Update, Delete. Le Zend Framework fournit une méthode simplissime pour gérer ces actions basiques, et des facilités pour gérer des opérations plus avancées. Prenons pour exemple une table contenant les informations des membres d'un site, que nous appellerons members (comme c'est original), et qui ne contiendra pour le moment que quelques champs (dont les noms seront, j'espère, assez explicite): mail, password et created_on.

Continue reading...

Wednesday 30 August 2006

Liens du jour

Liens en vrac:

  • MySQL DBA, le blog d'un DBA de chez flickr.
  • Serving Javascript Fast, par un développeur de chez flickr (décidément...) A noter que cet article parle des méthodes de cache d'une manière assez généraliste pour être appliquée à autre chose que du JavaScript, et n'oubliez pas non plus de lire les commentaires, il y en a de très interressants.
  • AJAX & Protoype: A Primer, explication simple et claire sur l'utilisation d'AJAX et des Classes avec Prototype.
  • Akra's Devnotes: Zend Framework, la catégorie Zend Framework du blog de Rob Allen, très interressante.

Wednesday 26 April 2006

Découverte: SQL Server

Aujourd'hui, pour la première fois de ma vie, j'ai touché à un SQL Server. Heureusement, j'étais accompagné, et l'expérience ne fut pas trop douloureuse, Juste je me demande pourquoi ils disent database..table au lieu de database.table... D'ailleurs, je me demande bien comment les DAL gérent ça ? Bref, c'est l'heure de faire du javascript :-)

Thursday 13 April 2006

Downgrade MySQL 5.0 vers 4.x avec APT

Si vous avez un mysql-server-5.0 d'installé et que vous souhaitez le downgrader vers un 4.x (pour une raison X ou Y), il est probable que APT vous jette ainsi:

Aborting downgrade from (at least) 5.0 to 4.1.
dpkg: error processing mysql-server-4.1_4.1.15-1ubuntu5_i386.deb (--install):
 subprocess pre-installation script returned error exit status 1
Errors were encountered while processing:
 mysql-server-4.1_4.1.15-1ubuntu5_i386.deb

So what ? Il s'agit en fait d'un problème causé par la présence du /var/lib/mysql du mysql-server-5.0, il suffit de le supprimer, ou de le déplacer pour backup:

rm -rf /var/lib/mysql
mv /var/lib/mysql /var/lib/mysql.old

Une des deux seulement hein ! Puis on relance l'installation:

apt-get install mysql-server-4.1

Ce post inaugure le retour en douceur des posts techniques sur ce blog.

Sunday 5 February 2006

MySQL, type de champ ENUM et type de valeur

Imaginons la table suivante:

+--------+---------------+------+-----+---------+-------+
| Field  | Type          | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| foobar | enum('0','1') | YES  |     | NULL    |       |
+--------+---------------+------+-----+---------+-------+

Exemple complètement trivial, je sais. L'astuce du jour porte donc sur les requêtes de type SELECT avec un WHERE portant sur un champ de type ENUM. Ce qu'il faut savoir, c'est que la déclaration d'un champ en tant qu'ENUM fait qu'on ne peut pas considérer ce champs comme un entier. Ainsi, la requête suivante retournera un Empty set:

SELECT * FROM foobar WHERE foobar = 0;

Quelque soit le contenu de la table foobar. Il faut écrire la requête comme suit:

SELECT * FROM foobar WHERE foobar = '0';

Et pour les petits malins qui se croient plus malins que MySQL:

mysql> create table foobar (foo enum('0', '1'), bar(0, 1));
ERROR 1064 (42000): 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 '(0, 1))' at line 1