无法自动为数据库创建多于1个INT

时间:2014-01-31 05:42:00

标签: mysql mysqli

我所指的INT是由表创建代码底部的空格分隔的INT。如果我不包含额外的INT,那么该表将进入数据库。你能看出我做错了什么,或者只是我不能用表创建文件一次创建多个INT?

由于

$tbl_users = "CREATE TABLE IF NOT EXISTS users (
                     id INT (11) NOT NULL AUTO_INCREMENT,
                     username VARCHAR (16) NOT NULL,
                     email VARCHAR (255) NOT NULL,
                     password VARCHAR (255) NOT NULL,
                     gender ENUM ('m','f') NOT NULL,
                     website VARCHAR (255) NULL,
                     country VARCHAR (255) NULL,
                     userlevel ENUM('a','b','c','d') NOT NULL DEFAULT 'a',
                     avatar VARCHAR (255) NULL,
                     banner VARCHAR (255) NULL,
                     ip VARCHAR (255) NOT NULL,
                     signup DATETIME NOT NULL,
                     lastlogin DATETIME NOT NULL,
                     notecheck DATETIME NOT NULL,
                     activated ENUM('0','1') NOT NULL DEFAULT '0',
                     xbox ENUM('0','1') NOT NULL DEFAULT '0',
                     psn ENUM('0','1') NOT NULL DEFAULT '0',
                     steam ENUM('0','1') NOT NULL DEFAULT '0',
                     provname VARCHAR (16) NOT NULL,
                     provider ENUM('0','1') NOT NULL DEFAULT '0',
                     teamname VARCHAR (16) NOT NULL,
                     team ENUM('0','1') NOT NULL DEFAULT '0',
                     castname VARCHAR (16) NOT NULL,
                     followers TEXT NULL,
                     following_users TEXT NULL,
                     following_providers TEXT NULL,
                     following_teams TEXT NULL,
                     favorite_teams TEXT NULL,
                     favorite_providers TEXT NULL,
                     likers TEXT NULL,

                     followers_total INT (11) NOT NULL AUTO_INCREMENT DEFAULT '0',
                     following_total INT (11) NOT NULL AUTO_INCREMENT DEFAULT '0',
                     likes INT (11) NOT NULL AUTO_INCREMENT DEFAULT '0',
                     views INT (11) NOT NULL AUTO_INCREMENT DEFAULT '0',

                     caster ENUM('0','1') NOT NULL DEFAULT '0',
                     PRIMARY KEY (id),
                     UNIQUE KEY username (username,email)

                 )";
    $query = mysqli_query($db_conx, $tbl_users);    
    if ($query === TRUE) {
        echo "<h3>user table created OK :) </h3>";
    } else {
        echo "<h3>user table NOT created :( </h3>";
    }

好的问题是,除非我拿出我添加的4 INT,否则不会制作此表。我已经在INT和代码之间添加了间隙,因此您可以更轻松地看到它。这些空间通常不在这里。我也尝试过在没有默认值的情况下制作它们。

我只是不知道答案,然后我不能自动创建超过1个INT,但这肯定是它的原因吗?

3 个答案:

答案 0 :(得分:4)

您的问题不在于您有多个INT,而是您有多个AUTO_INCREMENT。每个表只能有一个AUTO_INCREMENT列。

来自the manual

  

每个表只能有一个AUTO_INCREMENT列必须编入索引不能有DEFAULT值。仅当AUTO_INCREMENT列仅包含正值时,它才能正常工作。插入负数被视为插入一个非常大的正数。这样做是为了避免数字从正到负“包裹”时的精度问题,并确保您不会意外地获得包含0的AUTO_INCREMENT列。

只有第一个(id INT (11) NOT NULL AUTO_INCREMENT)应该是AUTO_INCREMENT;对于其他人来说,这没有意义。添加新用户时,您希望followers_totalfollowing_totallikesviews0,而不是大于上一个用户的数字拿到。只需取出AUTO_INCREMENT这些列,你应该没问题。

答案 1 :(得分:3)

这是不可能的。只有一个auto-increment列,它必须被定义为MySQL中的一个键。

答案 2 :(得分:3)

MySQL不支持多个自动增量字段。为什么你需要5,你可以使用ID。