Ruby-MySql error

Hi!
I was doing some really really simple stuff with Ruby DBI…

    new_conn = DBI.connect("DBI:Mysql:test:localhost", "root", 

“pwd”)
new_conn.tables.each do |table|
new_conn.columns(table).each do |columninfo|
print columninfo[‘name’]
end
end

and strangely enough i am encountering this error:

Mysql.rb:662
column_info': undefined methodis_not_null?’ for
#Mysql::Field:Table

Any ideas or has anyone encountered this kind of an error before?

Thanks and regards,
Swanand

swanand deodhar wrote:

and strangely enough i am encountering this error:

Mysql.rb:662
column_info': undefined method is_not_null?’ for #Mysql::Field:Table

Any ideas or has anyone encountered this kind of an error before?

2 Things:

  1. Where did you get your Mysql driver? (eg. ActiveRecord gem, from
    MySQL.com, etc)

  2. Please post the entire exception trace.


    • Travis D Warlick, Jr
    • Lead Developer
    • Operis Systems, LLC

Ok, I honestly just worked with this.

DBI is pretty low level, and I had some problems with it.

You’re encountering an error with the library itself, so you might
want to either email the writer, or use something a little higher level.

I recommend Ruby/Mysql. Pure Ruby :slight_smile:

http://www.tmtm.org/en/ruby/mysql/

aRi
-------------------------------------------|
Nietzsche is my copilot

Wait, so you commented the code and it ran perfectly? THat was it?
Weird. Probably just a quirk of technology.
My friend has a microwave you can only open by hitting it on the head.

Sorry I couldn’t help you sooner
aRi
--------------------------------------------|
If you’re not living on the edge,
then you’re just wasting space.

Hi!
lol!!! guess metaphor fits in perfectly…and yes, when i
commented the code, it ran perfectly…anyways, thank you and to all for
helping.

Thanks and regards,
Swanand

Ari B. [email protected] wrote: Wait, so you commented the code and
it ran perfectly? THat was it?
Weird. Probably just a quirk of technology.
My friend has a microwave you can only open by hitting it on the head.

Sorry I couldn’t help you sooner
aRi
--------------------------------------------|
If you’re not living on the edge,
then you’re just wasting space.

Hi!
I downloaded the tarball from

    http://www.tmtm.org/en/ruby/mysql/

The issue was resolved when i commented following code

      retval << {
              # Standard Ruby DBI column attributes
              'name'        => col.name,
              'sql_type'    => sql_type,
              'type_name'   => type_name,
              'precision'   => col.length,
              'scale'       => col.decimals,
              #'nullable'    => !col.is_not_null?, (commented by me)

              'indexed'     => ((col.flags & indexed) != 0),
                                #||col.is_pri_key?,  (commented by 

me)
#‘primary’ => col.is_pri_key?, (commented by me)
‘unique’ => ((col.flags & unique_key_flag) != 0),
#||col.is_pri_key?, (commented by
me)
# MySQL-specific attributes (signified by leading
“mysql_”)
‘mysql_type’ => col.type,
‘mysql_type_name’ => mysql_type_name,
‘mysql_length’ => col.length,
‘mysql_max_length’ => col.max_length,
‘mysql_flags’ => col.flags
}
}

Here is the entire stack trace:

  c:/ruby/lib/ruby/site_ruby/1.8/DBD/Mysql/Mysql.rb:662:in 

column_info': undefined methodis_not_null?’ for #Mysql::Field:Field
(NoMethodError)

    from c:/ruby/lib/ruby/site_ruby/1.8/DBD/Mysql/Mysql.rb:648:in 

each' from c:/ruby/lib/ruby/site_ruby/1.8/DBD/Mysql/Mysql.rb:648:incolumn_info’
from c:/ruby/lib/ruby/site_ruby/1.8/DBD/Mysql/Mysql.rb:573:in
execute' from c:/ruby/lib/ruby/site_ruby/1.8/DBD/Mysql/Mysql.rb:570:insynchronize’
from c:/ruby/lib/ruby/site_ruby/1.8/DBD/Mysql/Mysql.rb:570:in
execute' from c:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:888:inexecute’
from c:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:480:in execute' from dbi-demo.rb:4 from dbi-demo.rb:3:ineach’
from dbi-demo.rb:3

The code by me (This is running perfect when i comment code
as mentioned above)

    require "dbi"
    new_conn = DBI.connect("DBI:Mysql:summer_development:localhost",
                                           "root", "")
    new_conn.tables.each do |table|
           all_columns = new_conn.execute("desc #{table}")
                  for column in all_columns
                       puts column
           end
    end