トップページphp
323コメント112KB

Perl::DBI

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/03/12 23:35ID:xHkBB9i/
DBIでも語ろうぜ

DBI.org
http://DBI.perl.org
DBI-ML-J
http://member.nifty.ne.jp/hippo2000/dbi/dbi_japan.htm
DBI.pm 日本語訳
http://member.nifty.ne.jp/hippo2000/perltips/dbimemo.htm
0081山崎渉03/05/28 17:17ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0082nobodyさん03/05/30 14:30ID:I8fiUs9e
どうしてもCSVファイルにDBI使いたくてDBD::CSVやDBD::Spriteを
試したんだけど、どうしてもベンチマークとると速度が遅い。
やっぱりSQL解析部分で時間食うみたいだった。
しょうがないのでSQL解析部分を自作して速度の問題を解決。
DBDは一から作るのめんどいのでDBD::Templateを使いました。
もうこれからは掲示板だろうがなんだろうがDBI使い倒してやる。
0083nobodyさん03/05/31 06:20ID:rt7PEdog
>>82
速度改良されたpmファイルアップキボンヌ
0084nobodyさん03/05/31 23:01ID:oQuJYHeZ
あなたが探してる話題あれはこれでしょ♪
http://endou.kir.jp/betu/linkvp/linkvp.html
http://s-rf9.free-city.net/page006.html
00858203/06/03 16:07ID:lz5wO9wK
DBD::Templateを使ったサンプルをUPしておきました。
SQL解析部分は見てもらえば分かりますが「ナンチャッテSQL解析」なので、
自分のプログラムに合わせて処理を付け足す必要があります。
速度とプログラムの汎用性という意味では自分的には実用的かと思います。

http://webcolle.minidns.net/perl/
0086nobodyさん03/06/06 11:28ID:???
>>85
すばーらスィ!!!!!!
sql文の練習に使えます。ありがと。
こんど、オンラインでやってみます。
postgressql+pg.pmでやるのとどっちが速いかは、
やっぱデータ量によるんでしょうね。
00878203/06/06 16:33ID:q9w0p8v1
>>86
所詮データはCSVファイルなので本物のRDBMSとは比較になりません。

・CSVに対してSQLが使える。
・DBIを使うことでプログラムの汎用性がある。
・速度的にも掲示板のログ管理程度なら実用レベルである。
・PurePerlなのでレンタル鯖等でも使える。

メリットはこんなところでしょうか。
ちなみにテーブル定義とSQL解析はプログラムごとに
付属のdbisub.plをいじらなければなりませんので。
0088nobodyさん03/06/06 22:17ID:???
>>87
ところで、川合さんの「PerlでDBI」(256倍シリーズ)買ったけど、ちょちょっ
と見ると、DBDの分類で、「自作系 (1)sqlの解析にSQL::Statementを利用」
の中に、DBD-CSVってのがある(DBD-Fileを継承)けど、>>85のは、それの兄弟
のようなものかね。

00898203/06/08 01:44ID:???
DBD-Templateは河合さん作です。
↓のURL見た方が早いかもしれませんが、中身は本の中で紹介されてた
SomeFmt.pmを少しいじっただけだと思います。

http://www.hippo2000.info/cgi-bin/KbWiki/KbWiki.pl?cmd=disp&page=DBD%3a%3aTemplate

なんか作者でもないのに勝手に宣伝してるみたいでなんか
悪いことしてる気がしてきた・・・
0090nobodyさん03/06/10 07:48ID:???
>>89
いえ。ぜんぜん気にせんといてくらさい。
0091山崎 渉03/07/15 11:13ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0092nobodyさん03/07/24 20:46ID:???
あげとく
0093nobodyさん03/07/24 21:41ID:???
めんどくさくない?
0094山崎 渉03/08/02 02:24ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0095ぼるじょあ ◆ySd1dMH5Gk 03/08/02 04:53ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
0096nobodyさん03/10/30 20:20ID:MsIzuyZ0
誰かDBD::Access作ってよ。
DBD::ODBC使えって?UNIXでも使いたいんだよ。
0097nobodyさん03/11/01 19:09ID:ryreETR0
DBIでトランザクション処理ってどのようにやるんですか?
0098nobodyさん03/11/01 19:40ID:???
終了。
0099nobodyさん03/11/06 11:41ID:+rjyvfMX
勝手に終わらすな
0100nobodyさん03/11/07 12:36ID:???
AutoCommit をoff(0)にしたら
それ以降は、commit するまで1つのトランザクション
01019703/11/11 23:17ID:???
>>100
遅レスですがありがとうございます。
0102nobodyさん03/11/20 16:24ID:5vqTDfsp
DBモジュールの件で質問ですが、PostgreSQLのgetvalueって、
MySQLではどういった形になるのでしょうか。
只今移行中です。
MySQLの場合はfechrowはあるのですけどgetvalueが無いので
困ってます。

PostgreSQLでのDBアクセスはPgモジュール、MySQLでは
http://www.atmarkit.co.jp/flinux/rensai/mysql04/mysql04a.html
この方法をとりました。

どうか教えてください。
0103nobodyさん03/11/20 16:44ID:???
FreeBSD の compat/linux 環境で Oracle 9i の DBD::Oracle を
build できた経験のある人っていませんか?
0104nobodyさん03/11/20 18:17ID:???
>>102
なんかあちこちで見かけるなw
selectall-xxx とかじゃだめかねえ
0105nobodyさん03/11/20 20:45ID:???
>>104
selectrowにしました。
ありがとうございました。
0106nobodyさん04/01/01 17:37ID:P0LnBj0e
$mydb = DBI->connect("dbi:Pg:dbname=$DB_name","$DB_user","$DB_pwd");
$word = "It's";
$word =~ tr/'/\\\'/;
$sth = $mydb->prepare("insert into $TABLE_name values ('$word');");
$sth->execute() ;
$sth->finish();
$mydb->disconnect();

ってやったとき"It's" の ' が消えて "Its"で登録されちゃうんですけど、どうすれば回避できますか?
$word =~ tr/'/''/; もやったけど、
DBD::Pg::st execute failed: ERROR: parser: parse error at or near "s" at character 86
ってでます。 quoteって関数使えば良いらしいけど、使い方が良くわかりません。
識者の方々殿。 よろしくお願いします。
0107nobodyさん04/01/01 17:59ID:???
>>106
http://www5a.biglobe.ne.jp/~n_rieko/perl/8.htm

- $word =~ tr/'/\\\'/;
+ $word =~ s/'/\\'/g;
010810604/01/01 18:13ID:P0LnBj0e
>>107
出来たー! 有難う。 昨日からずーーっとこれでハマッってたっす。
ところで - と + ってどういう意味?
010910604/01/01 18:29ID:P0LnBj0e
あ、わかった。 trは1文字づつそれぞれ評価されて置換されるってことね。
AFOでスマソ
0110nobodyさん04/01/01 19:11ID:???
>>108
> ところで - と + ってどういう意味?
unified diff

ところで確認せずに言うけど
$sth = $mydb->prepare("insert into $TABLE_name values (?)");
$sth->execute($word);
ってやったら勝手にエスケープされんかい?
0111nobodyさん04/01/02 18:27ID:???
>>106
「perl dbi プレースホルダ」でググれ
011210604/01/03 12:41ID:2IxFJ5oW
>>110
出来ました。勉強になりました。
ありがとうございます。
0113nobodyさん04/01/15 19:42ID:AedXtgQu
while (@row = $sth->fetchrow_array) {
push @array,$row[0];
}
print join(" ",@array);

これでレコードは全て数値で返ってくるとして、レコードが無い場合には
0を挟むようにしたいのですが、たとえば5個レコードがあると仮定して
3番目がNULLの場合には

3 4 0 52 1

でも実際には

3 4 52 1

と出力されてしまいます。
どうやったらレコードがNULLなのかどうか判断できるのでしょうか。
0114nobodyさん04/01/15 22:17ID:???
push @array,$row[0] ? $row[0] : 0;
011511304/01/15 23:06ID:AedXtgQu
>>114
なるほど。ありがとうございます。

3番目がNULLの場合ではなく、3番以降が全てNULLだとすると

3 4 0 0 0

と期待したいところ、4回目で既にレコードがないためにwhileの
ブロック内が実行されずに

3 4 0

となってしまいました。これを期待通りに出力するにはどうしたら
いいのでしょうか。
0116nobodyさん04/01/15 23:58ID:???
>>115
print join " ", map $_ + 0, @array[0..4];

以降 Perl の基本的な質問はこちらへ。
http://pc2.2ch.net/test/read.cgi/php/1072896288/
011711304/01/16 20:36ID:???
while (@row = $sth->fetchrow_array) {
push @array,$row[0]?$row[0]:0;
}
print join(" ",map $_ + 0,@array[0..4]);
としてみたのですが、レコードが無いと、whileブロック内が実行されないため
3 4 0 52 1
ではなく
3 4 52 1 0
になってしまいました。結局
$sth->fetchrow_arrayが必ずレコードを返すようにselect文を修正しました。
ありがとうございました。
0118nobodyさん04/01/30 01:13ID:???
Apache::DBI 環境下での DBI::Proxy ってどのくらいの枯れぐあいですか?

曖昧な質問しても応えづらいとは思うのですが、
運用されてる方の「幸せになった話」や「なんでやねん話」を
お聞かせ願いたい。
0119nobodyさん04/01/30 09:32ID:???
そもそも mod_perl 自体が枯れてないし。
0120nobodyさん04/01/30 21:29ID:DOZLZjLQ
ageてみるー
0121nobodyさん04/02/01 12:13ID:nycEgmtE
プレースホルダにNULL値をバインドさせたいときはどうやるのでしょうか?
name:text(文字型)
regist:date(日付型)
のとき
$sth = $dbh->prepare("INSERT INTO staff (name, regist) VALUES (?, ?)");
$name= "hoge";
$regist = NULL;
$sth->execute($name, $regist);
だと上手くいかないのです
0122nobodyさん04/02/01 12:57ID:V0LjMB45
Apache::DBI入れてみました。
個々のCGIがDBに接続するときのユーザやパスワードって皆さんどこに書き込んでいますか?
CGIにそれぞれ書き込んじゃってもいいのですが、分散するし危険な気もするので
人目にさらされない場所で一カ所で管理したいと思っています。
みなさんどうやってます?
0123nobodyさん04/02/01 13:16ID:???
>>121
つか多分それ strict 通んないだそ
>>1 にリンクされてる「DBI.pm 日本語訳」ページから 'NULL' を探せ

>>122
接続用のクラスを作ってそこに書き (/usr/local/lib/perl とかどっかその辺に)
DB 使う CGI は全部それを use してる
0124nobodyさん04/02/01 15:55ID:nycEgmtE
>>123
的確な指摘ありがとうございます
バッチリ上手くいきました
0125nobodyさん04/02/05 15:37ID:yM4BLX2X
use DBI;

$DB = "hogedb";
$User = "hogeuser";
$Passwd = "hogepass";

$dbh = DBI->connect("DBI:mysql:$DB:localhost", $User, $Passwd);
$login_id = $dbh->quote($login_id);
$sql = "select Cust_kanji from bb_k where login_id = " . $login_id ;
$sth->prepare($sql);
$sth->execute;

@get_data = $sth->fetchrow_array;
$Cust_kanji = $get_data[0];
$sth->finish;
$dbh->disconnect;

とやってるだけなのに、

Can't call method "prepare" on an undefined value at /u/web/bblabc/cgi-local/friends/intro_popuppreview.cgi line 56.
と怒られてしまいます。

原因として何が考えられるのでしょうか?
いろいろ調べたもののわかりませんでした。

それと不思議なのが、
同じサーバの別のスクリプトで、
DBIでMysqlにつなげて成功している場合があるということです。

どなたか教えていただければ幸いです。
0126nobodyさん04/02/05 17:01ID:???
>>125

$sth って何が入ってるの?
012712504/02/05 17:27ID:???
>>126
$sth->prepare($sql);
じゃなくて、
$sth = $dbh->prepare($sql);
の間違いでした。。。すみません。
まだ、DBI歴2日なもので。。。
ありがとうございます。
0128nobodyさん04/02/07 02:17ID:7x+8FZeN
DBIで掛かった時間て取得できないのでしょうか?
コマンドラインで実行したサイの
「ex:6 rows in set (0.05 sec)」
〜secみたいなやつ
0129nobodyさん04/02/07 18:29ID:???
>>128
かなり昔に使っただけだし若干狙いが違うかもしれないが、DBI配布キットにプロファイラがある。
perldoc DBI::Profile
見てみれ
0130nobodyさん04/02/07 20:40ID:???
>>129
どうもうです。みてみます。
013111804/02/09 22:00ID:r2jpV3Tk
ちまちまApache::DBIを触ってみてるんですが、
これって同じリモートDBマシン上の複数のDBへの接続を
キャッシュできないんですか?

マニュアルには「接続を定義するパラメータは接続属性も含めて
まったく同じでなければなりません」とあり、実際に

 DBI:Proxy:hostname=192.168.0.1;port=1234;dsn=dbi:Pg:dbname=hoge1
 DBI:Proxy:hostname=192.168.0.1;port=1234;dsn=dbi:Pg:dbname=hoge2

という二つの接続属性による接続を作成しても、二つ目はDBIが
panic: DBI active kids..... てな感じでエラーを吐くようなんですが。

すごくそんな訳無いやん、って気もするんですが、
そういうものなんでしょうか?
0132131=11804/02/09 22:14ID:r2jpV3Tk
あ、いや、違いますね。
問題なのはDBI::ProxyかDBDみたい。。。
0133Hippo200004/02/23 00:49ID:IskmOTa+
>>131
テストする直接DBD::Pgを利用するように変えてみては?
DBD::Proxy-DBI::ProxyServerをApache::DBIで利用するのは、ちょっと酷な気がします。
(そっちのほうがボトルネックになるでしょう)
0134Hippo200004/02/23 01:01ID:IskmOTa+
>>96
DBD::ODBCはUnixでも使えますけど?
MDBToolsのプロジェクトがODBCドライバを出したという話は聞いてますし、
先日、Timさんがこんなメール書いてましたけど反応なかったみたいです。

Accessing Access .mdb databases from unix (was: MS Access)
 http://www.mail-archive.com/dbi-dev@perl.org/msg02755.html

MDBToolsのソースを解析しようと思ってたけどODBCドライバがあるなら
もういいかなと。
013513104/02/23 23:50ID:wtoD45ZJ
>>133

DBD::Proxyを使ってみようと思ったのはDBに接続するアプリケーションサーバが
増えたときに、コネクションの制御が(漠然と)しやすいかなと思ったのと、
接続の取得クラスをSingletonパターンで実装するとコネクションプーリングが
実現できるかもしれないかなと思ったためです。
# Apache::DBIをよく理解してなかったことも有りますが...

結局あまり詳しく追求しませんでしたが、動作が不安定なので
とりあえずは直接接続以外の方法は検討しない事にしました。
0136nobodyさん04/03/06 11:22ID:7pY4exk3
すません。質問っす。
たとえばゲームのレビューを書くようなホームページを作ろうとして、
それをhtmlのページのフォームから必要な情報(ゲーム名、ゲーム会社とかレビュー内容とか)を書き込んで
それをサーバー側にデータとして蓄積していきます。
そして閲覧者が見る時に、そのゲーム名やゲーム会社名で検索できるようにするには
どのような技術を使えばよいのでしょうか。
ちなみにperlもいまいちですし、データベースの知識はミジンコくらいです><
環境は…パソコンはXPで、サーバーは有料のレンタルです。そこはperl、phpが使えるようです。
なにとぞm(__)m
0137nobodyさん04/03/06 12:41ID:???
perlかphpを使えばいいじゃん。
0138nobodyさん04/03/06 14:19ID:???
パンが無いのならお菓子を食べればいいのに
0139nobodyさん04/03/06 17:22ID:???
なぜこのスレで聞こうと思ったのかそこに興味がある
0140nobodyさん04/03/06 18:06ID:???
データベースだろうと、勝手に脳内変換して、DBIスレに書き込んじゃったとか。
0141nobodyさん04/03/06 23:21ID:???
あ、ここ場違いだった??><
別で聞きます…すません。
0142nobodyさん04/03/07 01:25ID:???
別で聞いてもオマイの質問じゃ碌な答えはかえらねぇよ
0143nobodyさん04/03/07 02:51ID:FpUwyDyc
DBIじゃなくて、Pgモジュール使ってるんですが、
Perlで扱うスレで誘導されてるんで、こっちで質問させてください。

Perlから、use PgでPostgre SQLにinsertするのを書いているんですが、
なぜか登録できません。(接続はできています。)

登録するカラムが26もあるのが原因なのかと悩んでいるんですが、
何か原因考えられませんか?

ちなみに、カラムを3,4個に減らすと登録できるんです。

使ってるデータ型は、text,smallint,bool,dateだけです。
0144nobodyさん04/03/07 12:49ID:???
登録できない場合にエラーが出てないかをまず確認すること
014514304/03/07 16:36ID:???
if ($result->resultStatus !
014614304/03/07 16:41ID:5iK4kpNa
切れてしまったので、再度

if ($result->resultStatus != PGRES_COMMAND_OK) {

print "$result->resultStatus";

}

を実行したら7と表示されました。(=は半角)

これは、PGRES_NONFATAL_ERRORということでいいのでしょうか?
0147nobodyさん04/03/07 18:28ID:???
>>146
ということでよさげだが、PGRES_NONFATAL_ERROR だけでは何が起きてるのかわからんな…
たぶん詳細なメッセージが stderr なりエラーログなりに出てると思うのだが、確認できん?

なんとなくSQL文の長さ制限に引っかかってるんじゃないかという気がするのだが自信は無い
014814604/03/07 21:16ID:5iK4kpNa
早速のレスありがとうございます。

SQLのstderrはどうしたら見られるのでしょうか…?

トクトクプロフェッショナルでやってるので、telnetは使えるのですが、エラーログとかはルートじゃ無くてもOKなのでしょうか?

SQL文の流さ制限は8KB以下でいいですか?これだと8192文字には行ってないはずです。

モジュールに渡せる制限とかもあるのでしょうか?

色々書いてしまいましたが、御教授お願いします。
0149nobodyさん04/03/07 21:22ID:???
$conn->errorMessage

じゃなかった?

最近はDBI&DBD−Pgばかりだから忘れた
015014804/03/08 04:02ID:???
なんか、深夜にやったら動きました。

自分でもなんでって感じなんですが、サーバーの負荷と関係あるんでしょうか?

ちなみに$conn->errorMessageは使えませんでした。

ともかくプログラム自体は合っているようなので、暫く様子見ることにします。ありがとうございました。
0151nobodyさん04/03/08 06:53ID:???
>トクトクプロフェッショナルでやってるので、
この辺が理由の気がする。
015215004/03/09 05:20ID:???
tok2 proが原因ですか…?

確かについ最近まで設定ミスでRDB使えない設定になってましたし、ずさんなとこが多いのは事実のような。

でも、トラフィックはめちゃめちゃな訳では無いし、安めで色々使えるので気に入ってるのですが、他にオススメのトコありますか?

自鯖立てろは無しで…。
0153nobodyさん04/03/10 10:25ID:???
errstrは?
0154nobodyさん04/03/15 22:17ID:5hxMa2mE
>>152
XREAとかな。
これ以上はレンタル鯖板に行って探すか、
自鯖板行って勉強するかだな。
0155131=13504/03/16 01:14ID:4QG7B2dV
database connection pooling は dbi の世界ではある種宗教的な問題でも
あるようで、この辺↓とか読みつつなるほどと思ったり。
ttp://mathforum.org/epigone/modperl/breetalwox/38B4DB3F.612476CE@acm.org

でも、プールしたいという想いを偽る事ができない方も多いかと思ったので参考まで。

ResourcePool by Markus Winand
ttp://search.cpan.org/~mws/
ttp://www.perldesignpatterns.com/?ResourcePool (ref

Apache-Sybase-ConPool by Michael Peppler
ttp://search.cpan.org/~mewp/

SQL-Relay
ttp://sqlrelay.sourceforge.net/


決してプロセス単位の接続永続化との比較ベンチをとる神光臨を待ってる訳じゃないですw
0156nobodyさん04/03/31 23:28ID:???
mod_auth_dbiのApache2用って無いのかな?
0157nobodyさん04/05/02 03:28ID:???
DBD::Pg使ってますが、executeのあとにfinishしないと
まずかったりしますか?
今書いてるソース、すべてつけていないもので、、、
0158nobodyさん04/05/11 22:42ID:???
某所でスレ違いと言われこちらに誘導されこちらにも書かせてもらいますが、

MySQLをPerlから操作しようとしました。
そしたらinstall_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC ...
とエラーがでました。
恐らくモジュールが入ってないのかと思いますが
どうすればインストールできるでしょうか。
一応、Msql-Mysql-modules-1.2219と言うのをDLしてきましたが
root権限など持っていないので説明にある方法ではインストールできません。
cgiとおなじフォルダにmysql.pmを置いてやれば動くような気もしますが
取り敢えず/mysql/libの中身をまるごと置いてやっただけでは動きませんでした。
0159nobodyさん04/05/11 23:50ID:???
DBI落としてきて、make install
0160nobodyさん04/05/12 07:05ID:???
>>159
root権限を持っていないのでその方法では出来ません。
0161nobodyさん04/05/12 09:20ID:???
自分のフォルダへインストールしませう
0162nobodyさん04/05/12 09:20ID:???
s/フォルダ/ディレクトリ/
0163nobodyさん04/05/12 12:09ID:???
perl Makefile.PL したあと、できた Makefile を手で書き換える
0164nobodyさん04/05/12 12:56ID:???
http://member.nifty.ne.jp/hippo2000/perltips/module_install.htm
0165nobodyさん04/05/12 17:30ID:???
DBI mysqlを利用しています。
名前「no」というカラムをauto_incrementで作成してinsertすると
「no」は自動的にインクリメントされていきますがinsertと同時に
今insertしたレコードの「no」を取得する方法はありますでしょうか?
現在は
1,insertする
2,一番最後のレコードの「no」取得する
という方法をしていますがもし1と2の間にinsertされると別の「no」を
取得してしまうことになります。1〜2の間でロックを行えば解決しますが
1回のSQL発行でinsertと「no」の値を取得できるようなことは出来るのでしょうか?
0166nobodyさん04/05/12 17:49ID:???
すみません自己解決しました。
http://dev.mysql.com/doc/mysql/ja/ODBC_and_last_insert_id.html

INSERT INTO GIRLS_DATA (no, name) VALUES(NULL, 'nobodyさん');
SELECT LAST_INSERT_ID();
016715804/05/12 20:10ID:???
>>159-164
無事、使う事ができるようになりました。有難うございました。



ところで、インストールしたファイルにNullP.pmと言うファイルが有りましたが
ガッしておいたほうが良いですか?
0168nobodyさん04/08/05 13:25ID:???
日付の加減算などを行う関数はMySQLとPostgreSQLで異なるようですが
DBIを経由すれば問題なく動くのでしょうか?
0169nobodyさん04/08/06 00:05ID:???
DBI は、プログラマが用意したSQL文をDBMSに投げる部分を共通化しているだけなので、
DBMSの方言に合わせたSQL文を書くのはプログラマの責任

DBIx系だとSQL方言の違いまである程度吸収してくれるモジュールがあるが
日付関数のはさすがに無いかもしれないなあ
017016804/08/09 13:45ID:???
>>169
AUTO_INCREMENTで自動付加された値を取り出す場合、
MySQLの場合「LAST_INSERT_ID()」を使いますが、PostgreSQLの場合は
「curval('targetname')」のように行うようです。
いまはプログラムでDBに合わせてsql文を変えています。(Win環境なのでPostgresSQLは使えません・・・)
このあたりも、DBIが吸収してくれますか?
0171nobodyさん04/08/09 14:59ID:???
SELECT文の実行結果CSV形式のファイルに保存したいのですが
コマンドは用意されていますか?
自分で作るのもそう手間ではないのですが・・・。
0172nobodyさん04/08/19 13:37ID:???
root権限の無い環境で、DBI/DBDを使いたいのですが、
他の環境でコンパイル済みのものをコピーして
パスを通してやれば問題なく動くのでしょうか?
0173nobodyさん04/08/20 00:00ID:???
(´-`).。oO(なぜ試さないのだろう・・・)
0174nobodyさん04/09/23 13:51:31ID:8pWVerC9
age
0175nobodyさん04/11/24 21:43:11ID:???
webProgじゃあないけど、ここが一番perl DBIの話にふさわしそうなので。
DBI:ODBC バグってるっぽい、ってのは気のせいでつか・・・?!
ActivePerl5.8/MySQL4.1.7の組み合わせで使ってて判明
確信持てないのでわかる香具師教えてくらはいな。
my $dataSource = "DBI:ODBC:test";
$dbh=DBI->connect($dataSource, $userName, $pass) || die "connect die:$!";
$sth = $dbh->prepare($query);
$sth ->execute($param) || die $dbh->errstr;
while (@row = $sth->fetchrow_array){
foreach $temp(@row){
print $temp . "\t";
}
}
ってやった結果が変なのでデバッガで見てみたら、@rowの中身が壊れてた。
テーブルの中身はほかのODBCクライアントで確認、異常なし。
壊れてたのは$queryで指定している3番目のカラムで、DB上ではvarchar(20)。
壊れてたデータは、8桁の数字の後に文字列が付いているというもので、数字だけになってた。
foreach部をdumpだっけ、書き換えてDBD側のエラーが出てきたような記憶がある。
それともActivePerl ppmパッケージのみのバグなんでしょうか・・・?
0176nobodyさん04/11/25 03:03:01ID:???
mysql使うならdbimysql使えばいんでないの?
017717504/11/25 09:38:47ID:???
>176
ああごめんなさい、それで動いてからのカキコです。
けど、同じODBC接続でもCSEはちゃんとデータとって来れてるし、あれっ?と思って。
017817504/11/29 23:58:45ID:SyWDmi2S
教えて君上げ
0179nobodyさん04/12/13 09:37:18ID:LQJcn1sJ
DBD::CSVって最新版ではトランザクションは使えるんだっけ?
0180nobodyさん04/12/14 18:00:43ID:gx135s3/
mysqlのバージョンが4.0.22なのですが
TIMEDIFF(expr,expr2)みたいなことをしたい場合どうしたらいいでしょうか。
そうしたい場合はperlで得るepoctimeの値を保存するべき?
0181nobodyさん2005/08/17(水) 02:05:25ID:???
質問したいのですが、テーブルの中の番号フィールドと名前フィールドをSELECTしてきて、
に番号フィールドのデータ全てを配列@aに格納、名前フィールドのデータを@bに格納するには
どう書いたらよいですか??
■ このスレッドは過去ログ倉庫に格納されています