我创建了一个表如下:
CREATE TABLE IF NOT EXISTS 'e!' (
`aa` int(11) unsigned NOT NULL auto_increment,
`showName` TEXT NOT NULL default '',
`startDateTime` DATETIME NOT NULL default '',
`endDateTime` DATETIME NOT NULL default '',
PRIMARY KEY (`aa`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)
然后尝试插入查询:
INSERT INTO e! (showname, startDateTime, endDateTime) VALUES('E! News ', '2012-05-03 19:00:00', '2012-05-03 20:00:00')
Run Code Online (Sandbox Code Playgroud)
而且由于!表名中的错误,我假设它!是mysql中的一个特殊字符.我试图逃避它,但查询仍然失败.
所以,我能有特殊字符,如!或&在表名?如果是,那么我可能不得不以某种方式对它们进行编码?
谢谢.
dec*_*eze 19
用后面的勾号引用你的模糊或"特殊"表名:
INSERT INTO `e!` ...
Run Code Online (Sandbox Code Playgroud)
或者更好的是,不要在表名中使用特殊字符来避免此类问题.
Chr*_*rga 12
根据文档,你不能:
标识符在内部转换为Unicode.它们可能包含以下字符:
不带引号的标识符中允许的字符:ASCII:[0-9,az,AZ $ _](基本拉丁字母,数字0-9,美元,下划线)扩展:U + 0080 .. U + FFFF
带引号的标识符中允许的字符包括完整的Unicode基本多语言平面(BMP),但U + 0000除外:ASCII:U + 0001 .. U + 007F扩展:U + 0080 .. U + FFFF
资料来源:http://dev.mysql.com/doc/refman/5.5/en/identifiers.html