create table in mysql using asterisk

Home » Asterisk Users » create table in mysql using asterisk
Asterisk Users 9 Comments

Hi,
I try to create a new table using MYSQL command in asterisk.
This is what i write:
Query resultid ${connid} CREATE TABLE IF NOT EXISTS “conference_600”
(“id” int(11) NOT NULL auto_increment, “channel_id” varchar(40),
“number_in_line” int(2), PRIMARY KEY(“id”)”)
and this is the warning that i get in the cli:
app_addon_sql_mysql.c:383 aMYSQL_query: aMYSQL_query: mysql_query
failed. Error: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to
use near ‘”conference_600″ (“id” int(11) NOT NULL auto_increment,
“channel_id” varchar(40)’ at line 1

What is the problem do you think?
Do I in the direction or have a completely different way to do this?

9 thoughts on - create table in mysql using asterisk

  • That’s a MySQL syntax error, not an Asterisk error. However, the
    solution is to not put quotes around your table and field names. That
    will make MySQL happy.

  • Thanks
    But that’s not the problem, I also tried without the quotes and still
    the error appears only this time it is like this
    app_addon_sql_mysql.c:383 aMYSQL_query: aMYSQL_query: mysql_query
    failed. Error: You have an error in your SQL syntax; check the manual
    that corresponds to your MySQL server version for the right syntax to
    use near ” at line 1

  • And you tested that query outside of Asterisk?

    BTW: why would you create a table from within the Asterisk dialplan?

  • In article ,
    Eyal wrote:

    Yes, you need to solve your problem in a completely different way.

    You appear to be wanting to create a new table for each conference,
    with the table containing a row for each channel that is a member
    of the conference.

    You don’t need to do that at all. Just have a single table, with an
    additional column containing your conference number. Then you only
    need to create the table once, outside of Asterisk, and within
    Asterisk you only need to write rows into the table, putting the
    conference number into the additional column instead of using it
    as part of the table name.

    Hope this helps!

    Tony

  • O.P. doesn’t state his Asterisk version, but in 10.0(beta) I had a similar
    problem where sqlite3 couldn’t create the new Asterisk DB. From what I read
    in the archives, we really could use a guru to thoroughly “pound” these DB
    statements to make them a bit more bullet-proof.

  • That’s because your syntax is wrong.

    Strict ANSI SQL specifies ‘single speech marks’ around values, and no reserved
    words in field names.

    There are two non-standard extensions that have grown up since then.

    PostgreSQL allows you to use “double speech marks” around a field name with a
    reserved word in it (like your example above).

    MySQL accepts “double speech marks” around *values* as an alternative to
    ‘single speech marks’. If you need to use a reserved word in a field name, you
    need to use `backward speech marks` (old-fashioned shorthand for command
    output) around the field name.

  • Is this a “UK’ism?”

    I’ve never seen a ‘quotation mark’ (single or double) referred to as a
    ‘speech mark.’

  • In article ,
    Steve Edwards wrote:

    It probably is, then, as I’m in the UK and it sounded normal to me!
    Although personally I call them single-quotes and double-quotes.
    When I was young they were often called “inverted commas” too.

    Cheers
    Tony

  • You seem to be confusing MySQL with the internal astdb (originally an
    old Berkeley DB, replaced in 10 with SQLite).