在数据库中创建表

时间:2014-07-15 21:18:30

标签: php mysql

我正在尝试向我的数据库添加一个表,但我的代码不起作用。有人知道我做错了吗?

$createSUTable_SQL = "CREATE TABLE site_users(company_ID INT( 11 ) NOT NULL AUTO_INCREMENT , 
        company_CNPJ INT( 11 ) NOT NULL PRIMARY KEY , 
        company_Name VARCHAR( 50 ) NOT NULL , 
        name_Responsable  VARCHAR( 250 ) NOT NULL ,
        company_Category  VARCHAR( 250 ) NOT NULL , 
        company_Street  VARCHAR( 250 ) NOT NULL , 
        company_Number  INT( 20 ) NOT NULL , 
        company_Number2  VARCHAR( 250 ) NOT NULL , 
        company_Town  VARCHAR( 250 ) NOT NULL , 
        company_State  VARCHAR( 250 ) NOT NULL , 
        company_Postcode  VARCHAR( 250 ) NOT NULL , 
        name_Country  VARCHAR( 250 ) NOT NULL )";


    if (mysql_query($createSUTable_SQL)){
        echo "'Create TABLE site_uers' - Successful. <br/><br/>";
    } else {
        echo "'Create TABLE site_uers' - Failed. <br/><br/>";
    }

响应有效,但由于某种原因,我无法创建表。

2 个答案:

答案 0 :(得分:0)

如果查询失败,您的mysql_error()子句中应该输出else

这会产生以下错误:

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

这个错误的含义应该很清楚。您的AUTO_INCREMENT列也应该是您的PRIMARY KEY列。

答案 1 :(得分:0)

您的问题是,company_ID未被定义为PRIMARY密钥,这是自动增量所必需的。

使company_ID成为主键是不可能的,因为您已经定义了主键。但您仍然可以将company_CNPJ更改为唯一,这有效

CREATE TABLE site_users(company_ID INT( 11 ) NOT NULL AUTO_INCREMENT , 
    company_CNPJ INT( 11 ) NOT NULL UNIQUE , 
    company_Name VARCHAR( 50 ) NOT NULL , 
    name_Responsable  VARCHAR( 250 ) NOT NULL ,
    company_Category  VARCHAR( 250 ) NOT NULL , 
    company_Street  VARCHAR( 250 ) NOT NULL , 
    company_Number  INT( 20 ) NOT NULL , 
    company_Number2  VARCHAR( 250 ) NOT NULL , 
    company_Town  VARCHAR( 250 ) NOT NULL , 
    company_State  VARCHAR( 250 ) NOT NULL , 
    company_Postcode  VARCHAR( 250 ) NOT NULL , 
    name_Country  VARCHAR( 250 ) NOT NULL,
    PRIMARY KEY(company_id))

如果您希望company_CNPJ是您的主键,您可以将company_ID设为id - 但通常,自动增量字段通常被声明为主要