【问题标题】:MYSQL gives wierd error messageMYSQL 给出奇怪的错误信息
【发布时间】:2026-01-27 04:45:02
【问题描述】:

由于某种原因,如果我在我的数据库中提交 “Nová objednávka pro návštěvníka”,它会导致此错误消息。我确实注意到数据库中是否确实进入了数据库,一些字符被替换为?。


保存此配置时发生错误:SQLSTATE[HY000]:一般错误:1267 操作“=”的排序规则(latin1_swedish_ci,IMPLICIT)和(utf8_general_ci,COERCIBLE)的非法混合,查询是: SELECT Job_Id, tablename_colummname, email_template, days FROM Envato_CustomConfig_Job WHERE tablename_colummname = :tablename_c AND email_template = :email AND days = :days AND timeStamp = :timeStamp AND Job_Id != :id LIMIT 1;

这是我用来创建表的 sql。

DROP TABLE IF EXISTS {$this->getTable('Envato_CustomConfig_Job')};
CREATE TABLE {$this->getTable('Envato_CustomConfig_Job')} (
  `Job_Id` int(11) NOT NULL AUTO_INCREMENT,
  `tablename_colummname` varchar(100) NOT NULL,
  `email_template` varchar(100) NOT NULL,
  `days` INT(2) NOT NULL,
  `timeStamp`  varchar(100) NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`Job_Id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

【问题讨论】:

  • 似乎您使用的字符集与数据库配置中的字符集不同。你应该检查一下。

标签: php email magento zend-framework plugins


【解决方案1】:

将 BINARY 添加到您的 WHERE 子句中,例如:

WHERE BINARY tablename_colummname = BINARY :tablename_c

我希望这会有所帮助:-)

【讨论】: