[erlang-questions] MySQL and Erlang: ODBC , column type error
Carl McDade
carlmcdade@REDACTED
Mon May 11 15:44:53 CEST 2009
Thanks!
That got me far enough to frighten me to death . It appears that only
integer fields are supported:
4> Results = odbc:describe_table(Conn, "wp_posts").
{ok,[{"ID",'SQL_BIGINT'},
{"post_author",'SQL_BIGINT'},
{"post_date",'SQL_TYPE_TIMESTAMP'},
{"post_date_gmt",'SQL_TYPE_TIMESTAMP'},
{"post_content",'ODBC_UNSUPPORTED_TYPE'},
{"post_title",'ODBC_UNSUPPORTED_TYPE'},
{"post_category",sql_integer},
{"post_excerpt",'ODBC_UNSUPPORTED_TYPE'},
{"post_status",'ODBC_UNSUPPORTED_TYPE'},
{"comment_status",'ODBC_UNSUPPORTED_TYPE'},
{"ping_status",'ODBC_UNSUPPORTED_TYPE'},
{"post_password",'ODBC_UNSUPPORTED_TYPE'},
{"post_name",'ODBC_UNSUPPORTED_TYPE'},
{"to_ping",'ODBC_UNSUPPORTED_TYPE'},
{"pinged",'ODBC_UNSUPPORTED_TYPE'},
{"post_modified",'SQL_TYPE_TIMESTAMP'},
{"post_modified_gmt",'SQL_TYPE_TIMESTAMP'},
{"post_content_filtered",'ODBC_UNSUPPORTED_TYPE'},
{"post_parent",'SQL_BIGINT'},
{"guid",'ODBC_UNSUPPORTED_TYPE'},
{"menu_order",sql_integer},
{"post_type",'ODBC_UNSUPPORTED_TYPE'},
{"post_mime_type",'ODBC_UNSUPPORTED_TYPE'},
{"comment_count",'SQL_BIGINT'}]}
Out of this list there are 8 varchar fields of varying lengths that
should be supported as strings according to the ODBC to Erlang map in
the docs.
http://erlang.org/doc/apps/odbc/databases.html#type
Looks like something is seriously broken or the docs need some
rewrites. Or is the implementation explicitly Microsoft SQL Server?
On Mon, May 11, 2009 at 3:01 PM, Robert Raschke <rtrlists@REDACTED> wrote:
>
> On Mon, May 11, 2009 at 12:47 PM, Carl McDade <carlmcdade@REDACTED> wrote:
>>
>> Hello,
>>
>> Is this a problem with the driver (usually it is) or Erlangs use of the
>> driver?
>>
>> 5> ConnString = "Driver={MySQL ODBC 5.1
>> Driver};Server=localhost;Database=wordpress;
>> User=root;Password=;Option=3;".
>> "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=wordpress;
>> User=root;Password=;Option=3;"
>> 6> {ok, Conn} = odbc:connect(ConnString, []).
>> {ok,<0.43.0>}
>> 7> Results = odbc:sql_query(Conn, "SELECT post_title FROM wp_posts LIMIT
>> 5").
>> {error,"Column type not supported"}
>> 8> Results = odbc:sql_query(Conn, "SELECT post_name FROM wp_posts LIMIT
>> 5").
>> {error,"Column type not supported"}
>> 9> Results = odbc:sql_query(Conn, "SELECT * FROM wp_posts LIMIT 5").
>> {error,"Column type not supported"}
>> 10> Results = odbc:sql_query(Conn, "SELECT option_name FROM wp_options").
>> {error,"Column type not supported"}
>> 11> Results = odbc:sql_query(Conn, "SELECT OPTION_NAME FROM wp_options").
>> {error,"Column type not supported"}
>>
>>
>> It seems to me that there is a flaw in what the ODBC driver is sending
>> and what Erlang can understand. But in might also be a bug since I
>> doubt many use MySQL in conjunction with Erlang. So maybe no one has
>> tested this?
>>
>>
>> Can someone toss me a bone?
>
> The Erlang ODBC driver doesn't do BLOB or national character data types (I
> think dates aren't in there either, but can't remember). When you issue SQL
> queries, write them so that they return regular (char or varchar) strings or
> numbers.
>
> Assuming option_name is an nvarchar, you could try:
> odbc:sql_query(Conn, "SELECT {fn CONVERT(option_name, SQL_VARCHAR)} FROM
> wp_options").
>
> One of the odbc functions (odbc:describe_table/2) gives you the types of the
> columns in a table. I think that pointed out if something wasn't going to be
> supported.
>
> Hope this gets you a bit further,
> Robby
>
>
>
>
--
Carl McDade
Content Management Systems Consultant
www.hiveminds.co.uk
________________________
More information about the erlang-questions
mailing list