I am trying to insert a line of data into a table in MySQL 5, the data I
am using is:

StartTime: 20090413 13:41:53.000 TestName:changehistory.pl Pass:20
Fail:0 Total:20

Using this function I strip the data down and am going to insert it
using the ActiveRecord insert function (I'm not using Rails as this is a
Ruby app) so I am loading the ActiveRecord library and using it
directly.

    class AutoHarnesses < ActiveRecord::Base
    end

    def test_add(line,name)
        @machine = name[2]
        begin
            # Test Results will have data in the line
            if line =~ /data/
                # Scan the line and pull out the pairs we want
                # for eventual sql insert, thank you ruby-forums!
                s = line.scan(/(\w+):\s*([\s\d:.]+|\S+)/)
                s.shift
                # Assign values
                s.each { |key,value|
                    if key == "TestName"
                        then @testname = value
                    elsif key == "Pass"
                        then @passes = value.to_i
                    elsif key == "Fail"
                        then @failures = value.to_i
                    elsif key == "Total"
                        then @totals = value.to_i
                    else
                        LOGGER.warn "Did not find a recognizable test
result."
                    end
                }
                agNew = AutoHarnesses.connection.insert("INSERT into
                    auto_harnesses
(machinename,testname,test_pass,test_fail,
                    test_total) VALUES (\"{...@machine}\",\"{...@testname}\",
                    \"{...@passes}\", \"{...@failures}\", \"{...@totals}\")")
            end
        rescue
            # Print out errors
            LOGGER.warn $!
        end
    end

If I run some debugging statements after assinging the values I get:
Test changehistory.pl on testbox20 had 20 passes and 0 fails from a
total of 20.  So I know the values are being set properly.

The data looks ok, but the insert returns the following error:
#<ActiveRecord::StatementInvalid: Mysql::Error: Incorrect integer value:
'{...@passes}' for column 'test_pass' at row 1: INSERT into
                    auto_harnesses
(machinename,testname,test_pass,test_fail,
                    test_total) VALUES ("{...@machine}","{...@testname}",
                    "{...@passes}", "{...@failures}", "{...@totals}")>

I thought converting the Pass, Fail and Total values to_i would be best,
since those database columns are int, but that does not seem to resolve
anything.  I thought maybe the double quotes was somehow converting the
integer values to strings again but I got a SQL error instead so I don't
think that is it either.  Google and a search of the forums has not
shown me anything that is helping me figure out what is going on.

Anyone encountered something similar they can share some insights with?

Thanks.
-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to