使用带连字符的Class :: DBI和表名

时间:2014-12-04 16:52:55

标签: mysql sql perl dbi

我有一些旧表我想使用Class::DBI但是当我尝试使用名称中带有连字符的表进行设置时,当我尝试使用我的类时,我得到了一个SQL错误。

我的班级定义:

MyClass->table('table-name');

缩短的错误讯息: DBD::mysql::st execute failed [..] near '-name [..]

(我的设置适用于名称中没有连字符的表。)

有没有办法告诉Class::DBI有连字符的表名?

我还注意到spat out的其余SQL没有用反引号``括起来的字段,这可能意味着任何带有连字符的列名也会失败。

1 个答案:

答案 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