2016-09-26 6 views
1

私は現在、私のPerlスクリプトでデータベースに接続するには、次のコードを使用します。DBD :: ODBCでポート番号を指定するにはどうすればよいですか?

my $dsn = 'dbi:ODBC:MYDATABASE'; 
my $database = 'uat_env'; 
my $user = 'user'; 
my $auth = 'password'; 

my $dbh = DBI->connect($dsn, $user, $auth, { 
    RaiseError => 1, 
    AutoCommit => 1 
}) or die("Couldn't connect to database"); 

$dbh->do('use '.$database); 

今ポートが40450.

に1433から変更された私はトラブルDSNでポートを変更が生じています。私は、この変更が働くだろうと思ったが、私は「DSNが見つからない」エラーが発生します:

my $dsn = 'dbi:ODBC:MYDATABASE;Port=40450'; 

これが機能しない理由の任意のアイデアを?

+0

から行くべきですか? – Borodin

答えて

2

ODBC用のDBIデータソース文字列には2つの形式があります。あなたは

dbi:ODBC:DSN=MYDATABASE 

またはあなたが持っているものである

dbi:ODBC:MYDATABASE 

にそれを省略することができますどちらかと言うことができます。あなたはだけ DSNを使用する場合は、あなたのdbi:ODBC:MYDATABASE;Port=40450は明らかにこれを行うには

適切な方法は、その新しいDSNを設定することです存在しないDSN MYDATABASE;Port=40450を探しているので、あなたは、任意のより多くのパラメータを追加することはできませんMYDATABASEのすべてのパラメータのコピーを持っていますが、推測で異なるポート名

で、私はあなたが

dbi:ODBC:DSN=MYDATABASE;Port=40450 

を書くことができるかもしれ言うだろうが、私は確認することはできませんし、私はtの方法がありません要件が単純な場合は、SQL Serverを使用していない場合

をestingすることは、あなたがこの

dbi:ODBC:Driver={SQL Server};Server=11.22.33.44;Port=40450 

のように、代わりにDSNのパラメータのすべてを供給することができますが、正しいドライバを供給する必要がありますODBC接続、および他のパラメータは

必要があるかもしれないあなたはMYDATABASE DSNの値を調べることによって開始し、基礎となるデータベースで何が

+0

ありがとう! dbi:ODBC:DSN = MYDATABASE;ポート= 40450が機能しました。私はパラメータを拾うためにDSN =を追加しなければならないことを知らなかった。この一日中私の頭を叩いたことがあります。 – j1nrg

+0

@JosephLasso:物事がうまくいくといいですね! – Borodin

関連する問題