Postgresqlで使う時SQL文がMySQLのになって使えないみたいです。
ybrliiu opened this issue · comments
ybrliiu commented
英語あまり出来ないので日本語で報告させていただきます、すいません;
環境:
Ubuntu 14.04
Perl 5.22.1
Postgresql 9.3
コード:
$ install-aniki --lib=./lib Sample::DB
で雛形を作った後、
スキーマを以下のように
package Sample::DB::Schema {
use 5.014002;
use DBIx::Schema::DSL;
use Aniki::Schema::Relationship::Declare;
create_table 'CHAT_RECORD' => columns {
integer 'Id', primary_key;
varchar 'Name';
varchar 'Message';
};
}
1;
DBを操作するスクリプトを以下のように書いて
use v5.22;
use warnings;
use utf8;
use Sample::DB;
my $db = Sample::DB->new(connect_info => ['dbi:Pg:dbname=chat', 'hoge', 'localhost']);
say $_->Name for $db->select('CHAT_RECORD')->all;
実行するとこんな感じにSQL文のエラーがでます。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@ Aniki 's Exception @@@@@
Reason : DBD::Pg::st execute failed: ERROR: syntax error at or near "`"
LINE 2: FROM `CHAT_RECORD`
^ at /home/****/perl5/lib/perl5/Aniki.pm line 549.
SQL : SELECT `Id`, `Name`, `Message`
FROM `CHAT_RECORD`
BIND : $VAR1 = [];
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
at /home/****/perl5/lib/perl5/Aniki.pm line 552.
Aniki::execute(Sample::DB=HASH(0x1c36d08), "SELECT `Id`, `Name`, `Message`\x{a}FROM `CHAT_RECORD`") called at /home/****/perl5/lib/perl5/Aniki.pm line 501
Aniki::select_by_sql(Sample::DB=HASH(0x1c36d08), "SELECT `Id`, `Name`, `Message`\x{a}FROM `CHAT_RECORD`", ARRAY(0x26ec890), HASH(0x3294940)) called at /home/****/perl5/lib/perl5/Aniki.pm line 436
Aniki::select(Sample::DB=HASH(0x1c36d08), "CHAT_RECORD") called at script/example.pl line 9
karupanerura commented
DBIx::Schema::DSLのデフォルトがMySQLなので、 database 'PostgreSQL'
としてデータベースを指定する必要があります。(undocumentedですみません。。
http://search.cpan.org/~songmu/DBIx-Schema-DSL-0.07/lib/DBIx/Schema/DSL.pm#database($str_:Str)
ybrliiu commented
なるほど。
DBIx::Schema::DSL のドキュメント読んでませんでした...。
お騒がせしました、ありがとうございます!