我正在尝试向我的数据库添加一个表,但我的代码不起作用。有人知道我做错了吗?
$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/>";
}
响应有效,但由于某种原因,我无法创建表。
答案 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 - 但通常,自动增量字段通常被声明为主要