Ошибки в mysql при подключении 2 таблицы

Когда я пытаюсь запрос рома, я нахожу ошибку как

#1267 - Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='

Моя структура таблицы

CREATE TABLE `empregistration` (
  `id` int(100) NOT NULL auto_increment,
  `cname` text NOT NULL,
  `cpersonname` text NOT NULL,
  `roaddress` text NOT NULL,
  `txtcity` text NOT NULL,
  `txtstate` text NOT NULL,
  `txtcountry` text NOT NULL,
  `faxno` varchar(255) NOT NULL,
  `contactno` varchar(255) NOT NULL,
  `url` varchar(255) NOT NULL,
  `empCat` varchar(255) NOT NULL,
  `empno` varchar(255) NOT NULL,
  `ctype` varchar(255) NOT NULL,
  `establishyear` varchar(255) NOT NULL,
  `txtjobcategory` text NOT NULL,
  `cemailid` varchar(255) NOT NULL,
  `calteremailid` varchar(255) NOT NULL,
  `aboutcompany` text NOT NULL,
  `password` varchar(255) NOT NULL,
  `conpassword` varchar(255) NOT NULL,
  `empLogo` varchar(255) NOT NULL,
  `paymenttype` varchar(255) NOT NULL,
  `regDate` int(11) default NULL,
  `countViewProf` varchar(200) default '0',
  `cntDownProf` varchar(200) default '0',
  `cntJobPost` varchar(200) default '0',
  `cntupdatejob` varchar(200) NOT NULL default '0',
  `limitjobpost` varchar(200) NOT NULL default '0',
  `limitofupdatejob` varchar(200) NOT NULL default '0',
  `limitofviewcv` varchar(200) NOT NULL default '0',
  `limitofdowncv` varchar(200) NOT NULL default '0',
  `paymentforpostjob` varchar(200) NOT NULL default '0',
  `paymentforsearchcv` varchar(200) NOT NULL default '0',
  `takenPlan` varchar(255) default '0',
  `planDate` date default NULL,
  `takenplanforpostjob` varchar(200) NOT NULL default '0',
  `postjobplandate` varchar(200) NOT NULL default '0',
  `cntJobPost1` varchar(200) default '0',
  `cntupdatejob1` varchar(200) default '0',
  `status` varchar(255) NOT NULL default 'Active',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=214 ;

и другой стол

CREATE TABLE `blockedcompanies` (
  `blockedId` int(11) NOT NULL auto_increment,
  `empId` varchar(50) collate latin1_general_ci NOT NULL,
  `regId` int(11) NOT NULL,
  `jobSeekId` varchar(50) collate latin1_general_ci NOT NULL,
  `blockDate` date NOT NULL,
  PRIMARY KEY  (`blockedId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5 ;

2 ответа

Вы не показываете свой запрос, но я ожидаю, что вы делаете где-то где-то с '='. Теперь ваша сортировка по умолчанию кажется шведской, а в таблице "заблокированных компаний" есть сортировка по latin1_general.

Ошибка говорит "неявная", поэтому вы не делаете что-то с сопоставлением в вашем запросе. Теперь вам приходится сравнивать разные сопоставления. Вы должны изменить это с помощью COLLATE

проверьте это: http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html

При создании таблицы empregistration измените последнюю строку с

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=214 ;

в

) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=214 ;

и ваш запрос должен начать работать.

Другие вопросы по тегам