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

标签 mysql sql perl dbi

我有一些旧表,我想使用 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/

相关文章:

java - 执行更新命令时 Liquibase 更改集显示为空

php - 向mysql数据库添加数据时无法访问网站

SQL Server 2008 插入时出现 "IDENTITY_INSERT is ON"错误

mysql - Sql 语句 order by with 条件?

perl - 如何在 Solaris 上为 Perl 编译 64 位 Postgres 绑定(bind)?

Perl - HTTP::Proxy 捕获 XHR/JSON 通信

perl - 使用 HTTPS 的 Perl LWP 的内存泄漏

mysql - 连接多个 MySQL 语句

php - SQL 返回 1 行

c# - Oracle 和 C# - UDT 数组作为返回值