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