tcfodor
6/9/2008 10:31:00 PM
On Jun 9, 1:35 pm, Daniel Berger <djber...@gmail.com> wrote:
> On Jun 9, 11:33 am, tcfo...@gmail.com wrote:
>
>
>
> > Hi all!
>
> > I'm using the Ruby DBI class to create connections to both a MSSQL and
> > an Oracle database to verify the data migration between them is
> > successful. My test works fine on XP, but on Vista (currently with
> > SP1, but my problem has always happened on Vista), I get a
> > segmentation fault when I perform my first select statement on the
> > Oracle database. Select statements are performed against the MSSQL
> > database prior to the Oracle database and work fine. I'm running the
> > test from a command prompt that has administrator privileges.
>
> > - Here's my Oracle connection:
>
> > @ora_connect = DBI.connect("DBI:ADO:Provider=OraOLEDB.Oracle;Data
> > Source=devserver;User Id=read_all;Password=password")
>
> > - Here is my method for running a select statement:
>
> > def getDBValue(connection, query, id1, *id2)
> > dbi_query = connection.prepare(query)
> > dbi_query.execute(id1, *id2)
> > #fetch the result
> > return dbi_query.fetch
> > end
>
> > - Here is the first Oracle select statement:
>
> > createDateTime = getDBValue(@ora_connect, "SELECT CREATED_TIME FROM
> > ORATEST.POLICY WHERE POLICYNUM = ?", policyNumber)
>
> > - Here is the error message I get:
>
> > c:/ruby/lib/ruby/site_ruby/1.8/DBD/ADO/ADO.rb:94: [BUG] Segmentation
> > fault ruby 1.8.6 (2007-03-13) [i386-mswin32]
>
> > Has anyone else seen this? Does anyone have any ideas on workarounds
> > or how to fix it?
>
> > Thanks in advance for your help!
>
> What version of Ruby and DBI are you using? Line 94 of my ADO.rb file
> is just a comment. Can you paste that line at least?
>
> Thanks,
>
> Dan
Sorry about that - I'm using Ruby version 1.8.6 and DBI version 0.1.1
Here's the code around line 94:
90 def execute
91 # TODO: use Command and Parameter
92 # TODO: substitute all ? by the parametes
93 sql = bind(self, @statement, @params)
94 @res_handle = @handle.Execute(sql)
95
96 # TODO: SELECT and AutoCommit finishes the result-set
97 # what to do?
98 if @db['AutoCommit'] == true and not SQL.query?(@statement)
then
99 @db.commit
100 end
101 rescue RuntimeError => err
102 raise DBI::DatabaseError.new(err.message)
103 end
Thanks for taking at look at this!
-Tiffany