我遇到this同样的问题,但是使用Doctrine 1.2而不是Doctrine 2.0。
我的名字中有一个非Ascii字符的列,当我尝试选择时,Doctrine会给我这个错误:
消息:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在'?? _ avanc ??附近使用正确的语法? AS c4__1(...)
哪里应该有法语“é”字符而不是双重问号。
这是我的联系:
$conn = Doctrine_Manager::connection("mysql://username:password@locahost/mydb","my_connection");
$conn->setCollate('utf8_general_ci');
$conn->setCharset("utf8");
这是我的选择:
$q = Doctrine_Query::create()->select("vicl_relevé_avancé vc")->FROM("vc.VisiteClient")->where("vc.id = ?", $id)->execute();
感谢您的帮助
答案 0 :(得分:0)
双问号?哎哟。这可能意味着多种事情都出错了。
表/列必须为CHARACTER SET utf8
;请参阅SHOW CREATE TABLE
进行检查。修复了可能解决问题的方法,但它可能会让它与众不同。
SELECT col, HEX(col) FROM tbl WHERE ...
- 查看实际存储的内容。 latin1
将显示E9为é; utf8
会显示C3A9为é。