连接2个表时mysql中的错误
当我尝试朗姆酒查询时,我发现错误如下
#1267 - 操作“=”时非法混合排序规则 (latin1_general_ci,IMPLICIT) 和 (latin1_swedish_ci,IMPLICIT)
我的表结构是
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 ;
When I am trying to rum query I find error like
#1267 - Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='
My table structure are
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 ;
and other table is
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 ;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您没有显示您的查询,但我希望您在其中以某种方式执行 where 并带有“=”。现在,您的默认排序规则似乎是瑞典语,并且“blockedcompanies”表的排序规则为 latin1_general。
该错误显示“隐式”,因此您没有在查询中使用排序规则执行某些操作。现在您必须比较不同的排序规则。您必须使用
COLLATE
进行更改,检查以下内容:http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html
You don't show your query, but i expect you're doing a where somehow with an '=' in there. Now your default collation seems to be swedish, and your 'blockedcompanies' table has a collation to latin1_general.
The error says "implicit", so you're not doing something with collation in your query. Now you have to different collation being compared. You've got to change that using
COLLATE
check this: http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html
当您创建表 emregistration 时,将最后一行从 更改为
,
您的查询应该开始工作。
when you create the table empregistration, change the final line from
to
and your query should start working.