我有一些旧表我想使用Class::DBI
但是当我尝试使用名称中带有连字符的表进行设置时,当我尝试使用我的类时,我得到了一个SQL错误。
我的班级定义:
MyClass->table('table-name');
缩短的错误讯息:
DBD::mysql::st execute failed [..] near '-name [..]
(我的设置适用于名称中没有连字符的表。)
有没有办法告诉Class::DBI
有连字符的表名?
我还注意到spat out的其余SQL没有用反引号``
括起来的字段,这可能意味着任何带有连字符的列名也会失败。
答案 0 :(得分:1)
给MySQL提供反引号就可以了:
MyClass->table('`table-name`')
顺便说一句,带有连字符的列名可以通过以下方式定义,以免破坏Perl:
__PACKAGE__->add_columns('`col-name`' => {accessor => 'col_name'}); # or w/e valid Perl sub name like instead of col_name