我有一些旧表,我想使用 Class::DBI
来处理,但是当我尝试使用名称中带有连字符的表进行设置时,我在尝试时收到了 SQL 错误使用我的类(class)。
我的类定义:
MyClass->table('table-name');
缩短的错误消息:
DBD::mysql::st 执行失败 [..] 靠近 '-name [..]
(我的设置适用于名称中没有连字符的表。)
有没有办法告诉Class::DBI
带有连字符的表名?
我还注意到,输出的 SQL 的其余部分没有包含在反引号 ``
中的字段,这可能意味着任何带有连字符的列名也会失败。
最佳答案
给 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
关于mysql - 使用 Class::DBI 和带连字符的表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27299543/