Hi all,

I know very little about mysql and sqlite - I've only played around a little
bit with databases, so I'm a newbie in this area.

There's a blogger called Wheatblog that I've been trying to convert from
mysql to sqlite so I don't have to run a full RDMBS deamon on my
underpowered machine for just a single blog program.

I think I've successfully replaced all the mysql calls with wrapper
functions that use sqlite functions.  There's just a few bits left that are
causing errors, and I'm having trouble fixing them.

Here's the bit of mysql sql that creates the database used by Wheatblog.  It
came in the Wheatblog zip file.  I'm surprised to see the accent grave (`):


   CREATE TABLE `wheatblog_categories` (
     `id` int(11) NOT NULL auto_increment,
     `category` varchar(30) NOT NULL default '',
     PRIMARY KEY  (`id`)
   ) TYPE=MyISAM; 

   CREATE TABLE `wheatblog_comments` (
     `id` int(11) NOT NULL auto_increment,
     `comment_author_name` varchar(100) NOT NULL default '',
     `comment_author_email` varchar(100) NOT NULL default '',
     `comment_author_url` varchar(100) NOT NULL default '',
     `comment_body` mediumtext NOT NULL,
     `post_id` int(11) NOT NULL default '0',
     `comment_month` int(2) NOT NULL default '0',
     `comment_date` int(2) NOT NULL default '0',
     `comment_year` int(4) NOT NULL default '0',
     PRIMARY KEY  (`id`)
   ) TYPE=MyISAM; 

   CREATE TABLE `wheatblog_posts` (
     `id` int(11) NOT NULL auto_increment,
     `day` varchar(10) default '',
     `month` int(2) NOT NULL default '0',
     `date` int(2) NOT NULL default '0',
     `year` int(4) NOT NULL default '0',
     `category` int(1) NOT NULL default '1',
     `showpref` tinyint(1) default '1',
     `body` mediumtext NOT NULL,
     `title` varchar(100) default '',
     `number_of_comments` int(11) NOT NULL default '0',
     PRIMARY KEY  (`id`)
   ) TYPE=MyISAM; 

   INSERT INTO `wheatblog_categories` (id, category) 
     values (null, 'unfiled');


And here's how I've tried to implement it on sqlite using PHP.  Note that
DB_query() is a wrapper for sqlite_query().  I've changed the
"auto_increment" to "INTEGER PRIMARY KEY", as the FAQ said.  I'm very new to
SQL, but I guess "INTEGER PRIMARY KEY" and "NOT NULL" aren't separated by
commas?


   function Create_Wheatblog_Database( $db )
   {
      $cmd =
      "CREATE TABLE 'wheatblog_categories' (
        'id' INTEGER PRIMARY KEY NOT NULL,
        'category' varchar(30) NOT NULL default '',
      ) TYPE=MyISAM;";                               <-------

      echo "<p>$cmd</p>";
      DB_query($cmd, $db);


      $cmd =
      "CREATE TABLE 'wheatblog_comments' (
        'id' INTEGER PRIMARY KEY NOT NULL,
        'comment_author_name' varchar(100) NOT NULL default '',
        'comment_author_email' varchar(100) NOT NULL default '',
        'comment_author_url' varchar(100) NOT NULL default '',
        'comment_body' mediumtext NOT NULL,
        'post_id' int(11) NOT NULL default '0',
        'comment_month' int(2) NOT NULL default '0',
        'comment_date' int(2) NOT NULL default '0',
        'comment_year' int(4) NOT NULL default '0',
      ) TYPE=MyISAM;";

      DB_query($cmd, $db);


      $cmd = 
      "CREATE TABLE 'wheatblog_posts' (
        'id' INTEGER PRIMARY KEY NOT NULL,
        'day' varchar(10) default '',
        'month' int(2) NOT NULL default '0',
        'date' int(2) NOT NULL default '0',
        'year' int(4) NOT NULL default '0',
        'category' int(1) NOT NULL default '1',
        'showpref' tinyint(1) default '1',
        'body' mediumtext NOT NULL,
        'title' varchar(100) default '',
        'number_of_comments' int(11) NOT NULL default '0',
      ) TYPE=MyISAM;";

      DB_query($cmd, $db);


      $cmd =
      "INSERT INTO 'wheatblog_categories' (id, category) 
        values (null, 'unfiled');";

      DB_query($cmd, $db);

   }


It appears that the error is a "syntax error" near where my arrow (<------)
is.  Can someone throw some charity my way?   Is there anything obviously
wrong here?

Thanks,
Pete

Reply via email to