Ver Mensaje Individual
  #9 (permalink)  
Antiguo 14/12/2007, 07:34
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Re: FAQ's de MySQL

Método para perimitir ingresar caracteres en españos y que no los tome como iguales.
Agradecimeinto a William Chiquito (Foro Spanish de MySQL.com) por esta magífica solución.

El problema era una tabla con PK tipo VARCHAR y que no tomaba "campaña" y "campana" como claves distintas, quedando solamente "campana". W. Chiquito mandó esta solución:

Cita:
Te muestro mi ejemplo:

CREATE TABLE `t2` (
`clave` varchar(20) character set utf8 NOT NULL default '',
PRIMARY KEY (`clave`)
) ENGINE=InnoDB;

INSERT INTO t2 (clave) VALUES ('campana');
INSERT INTO t2 (clave) VALUES ('campaña');
INSERT INTO t2 (clave) VALUES ('canción');
INSERT INTO t2 (clave) VALUES ('cancion');Resultado:

(1 row(s)affected)
(0 ms taken)

Error Code : 1062
Duplicate entry 'campaña' for key 1
(0 ms taken)

(1 row(s)affected)
(0 ms taken)

Error Code : 1062
Duplicate entry 'cancion' for key 1
(0 ms taken)

SELECT * FROM t2;Resultado:

clave
--------
campana
canción

DROP TABLE IF EXISTS t2;

CREATE TABLE `t2` (
`clave` varchar(20) collate latin1_spanish_ci NOT NULL default '',
PRIMARY KEY (`clave`)
) ENGINE=InnoDB;

INSERT INTO t2 (clave) VALUES ('campana');
INSERT INTO t2 (clave) VALUES ('campaña');
INSERT INTO t2 (clave) VALUES ('canción');
INSERT INTO t2 (clave) VALUES ('cancion');Resultado:

(1 row(s)affected)
(0 ms taken)

(1 row(s)affected)
(0 ms taken)

(1 row(s)affected)
(0 ms taken)

Error Code : 1062
Duplicate entry 'cancion' for key 1
(0 ms taken)

SELECT * FROM t2;Resultado:

clave
--------
campana
campaña
canción

DROP TABLE IF EXISTS t2;

CREATE TABLE `t2` (
`clave` varchar(20) character set latin1 collate latin1_bin NOT NULL default '',
PRIMARY KEY (`clave`)
) ENGINE=InnoDB;

INSERT INTO t2 (clave) VALUES ('campana');
INSERT INTO t2 (clave) VALUES ('campaña');
INSERT INTO t2 (clave) VALUES ('canción');
INSERT INTO t2 (clave) VALUES ('cancion');Resultado:

(1 row(s)affected)
(0 ms taken)

(1 row(s)affected)
(0 ms taken)

(1 row(s)affected)
(0 ms taken)

(1 row(s)affected)
(0 ms taken)

SELECT * FROM t2;Resultado:

clave
--------
campana
campaña
cancion
canción