ошибки в mysql при подключении 2 таблицы - PullRequest
1 голос
/ 15 января 2011

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

#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 ]

0 голосов
/ 15 января 2011

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

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

на

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

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

0 голосов
/ 15 января 2011

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

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

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

...