SQL数据库麻烦

时间:2013-10-31 17:16:11

标签: php mysql sql myisam

我正在尝试创建一个包含4个表的数据库。当我运行我的代码时,它会创建第一个表但不会创建另一个表。这是因为第二个表没有将存储引擎更改为myISAM,但我无法弄清楚为什么它没有这样做。这是我的代码:

<?php
require_once 'conn.php';
$sql= <<<EOS
CREATE TABLE IF NOT EXISTS cms_access_levels (
    access_lvl tinyint(4) NOT NULL auto_increment,
    access_name varchar(50) NOT NULL default'',
    PRIMARY KEY(access_lvl)
)
 EOS;
    $result= mysql_query($sql) or
    die(mysql_error());
$sql= "INSERT IGNORE INTO cms_access_levels " .
    "VALUES(1, 'Users'), " .
    "(2, 'Moderator'), " .
    "(3, 'Administrator')";
$result= mysql_query($sql) or
    die(mysql_error());
$sql= <<<EOS
CREATE TABLE IF NOT EXISTS cms_articles ENGINE = MYISAM (
    article_id int(11) NOT NULL auto_increment,
    author_id int(11) NOT NULL default '0',
    is_published tinyint(11) NOT NULL default '0',
    date_submitted datetime NOT NULL default '0000-00-00 00:00:00',
    date_published datetime NOT NULL default '0000-00-00 00:00:00',
    title varchar(255) NOT NULL default '',
    body mediumtext NOT NULL,
    PRIMARY KEY(article_id),
    KEY IdxArticle(author_id, date_submitted),
    FULLTEXT KEY IdxText(title, body)
)
  EOS;
$result= mysql_query($sql) or
    die(mysql_error());
    $sql= <<<EOS
    CREATE TABLE IF NOT EXISTS cms_comments (
        comment_id int(11) NOT NULL auto_increment,
        article_id int(11) NOT NULL default '0',
        comment_date datetime NOT NULL default '0000-00-00 00:00:00',
        comment_user int(11) NOT NULL default '0',
        comment text NOT NULL,
        PRIMARY KEY(comment_id),
        KEY idxComment(article_id)
)
  EOS;
$result= mysql_query($sql) or
    die(mysql_error());
    $sql= <<<EOS
    CREATE TABLE IF NOT EXISTS cms_users (
    user_id int(11) NOT NULL auto_increment,
    email varchar(255) NOT NULL default '',
    password varchar(50) NOT NULL default '',
    name varchar(100) NOT NULL default '',
    access_lvl tinyint(4) NOT NULL default '1',
    PRIMARY KEY(user_id),
    UNIQUE KEY uniq_email(email)
)
  EOS;
$result= mysql_query($sql) or
    die(mysql_error());
$adminemail= "aolle570@uwsp.edu";
$adminpass= "graysen7";
$adminname= "olle";
$sql= "INSERT INTO cms_users " .
"VALUES (NULL, '$adminemail', '$adminpass', '$adminname', 3)";
$result= mysql_query($sql) or
    die(mysql_error());
echo "<html><head><title>CMS Tables Created</title></head><body>";
echo "CMS Tables created. Here is the initial login information: <br />";
echo "<ul><li><strong>Login:</strong> " . $adminemail . "</li><br />";
echo "<li><strong>Password:</strong> " . $adminpass . "</li><br />";
echo "<a href='login.php'>Login</a> to the site now.";
echo "</ul></body></html>";
  ?>

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

您应该将ENGINE = MYISAM放在字段定义的右括号之后。

http://dev.mysql.com/doc/refman/5.1/en/create-table.html 表示table_options在创建定义之后。

答案 1 :(得分:1)

据我所知,我的数据库告诉我我是对的,应该在创建定义后提及引擎。试试这个:

CREATE TABLE IF NOT EXISTS cms_articles (
    article_id int(11) NOT NULL auto_increment,
    author_id int(11) NOT NULL default '0',
    is_published tinyint(11) NOT NULL default '0',
    date_submitted datetime NOT NULL default '0000-00-00 00:00:00',
    date_published datetime NOT NULL default '0000-00-00 00:00:00',
    title varchar(255) NOT NULL default '',
    body mediumtext NOT NULL,
    PRIMARY KEY(article_id),
    KEY IdxArticle(author_id, date_submitted),
    FULLTEXT KEY IdxText(title, body)
)  ENGINE = MYISAM