Php MySQL唯一约束..如何修复此错误?
首先,通过使用主键,我是否正确地应用了唯一约束Php MySQL唯一约束..如何修复此错误?,php,mysql,Php,Mysql,首先,通过使用主键,我是否正确地应用了唯一约束 <?php // Make a MySQL Connection mysql_connect("localhost", "oassda", "oas53a") or die(mysql_error()); mysql_select_db("o345ja") or die(mysql_error()); // Create a MySQL table in the selected database mysql_query("CREATE T
<?php
// Make a MySQL Connection
mysql_connect("localhost", "oassda", "oas53a") or die(mysql_error());
mysql_select_db("o345ja") or die(mysql_error());
// Create a MySQL table in the selected database
mysql_query("CREATE TABLE PersonInfo(
Email VARCHAR(45) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(Email),
PNumber VARCHAR(45))")
or die(mysql_error());
echo "Table Created!";
?>
我正试图使Email和PNumber不能插入重复的行。但我得到的错误是“列'Email'的列说明符不正确”。显然,这是一个错误,因为AUTO_INCREMENT只处理INT类型…知道如何使这两列不重复吗?很抱歉,我对MySQL没有太多的经验,因为我很久以前就这么做了,从那以后又出现了新的bug。- 是的,使用主键您将不会有重复的电子邮件(您也不会添加PNumber字段)
- 您正在对非整数(或类似smallint的子类型)的字段使用
AUTO_INCREMENT
- 是的,使用主键您将不会有重复的电子邮件(您也不会添加PNumber字段)
- 您正在对非整数(或类似smallint的子类型)的字段使用
AUTO_INCREMENT
mysql_query("CREATE TABLE PersonInfo(
Email VARCHAR(45) NOT NULL,
PNumber VARCHAR(45),
PRIMARY KEY(Email,PNumber))")
or die(mysql_error());
如果不是,您只需要一个主键-自动增量标志仅适用于INT类型
mysql_query("CREATE TABLE PersonInfo(
Email VARCHAR(45) NOT NULL,
PNumber VARCHAR(45),
PRIMARY KEY(Email))")
or die(mysql_error());
或者您可能只需要唯一的约束,例如
mysql_query("CREATE TABLE PersonInfo(
Email VARCHAR(45) NOT NULL,
PNumber VARCHAR(45),
PRIMARY KEY(Email),
UNIQUE(PNumber))")
or die(mysql_error());
您正在寻找复合主键吗?如果是这样,这就是修复错误的代码
mysql_query("CREATE TABLE PersonInfo(
Email VARCHAR(45) NOT NULL,
PNumber VARCHAR(45),
PRIMARY KEY(Email,PNumber))")
or die(mysql_error());
如果不是,您只需要一个主键-自动增量标志仅适用于INT类型
mysql_query("CREATE TABLE PersonInfo(
Email VARCHAR(45) NOT NULL,
PNumber VARCHAR(45),
PRIMARY KEY(Email))")
or die(mysql_error());
或者您可能只需要唯一的约束,例如
mysql_query("CREATE TABLE PersonInfo(
Email VARCHAR(45) NOT NULL,
PNumber VARCHAR(45),
PRIMARY KEY(Email),
UNIQUE(PNumber))")
or die(mysql_error());
- 去掉AUTO_增量,它是针对整数的,对于手动填充的字段没有意义
- 不需要为NULL,因为主键使其隐式
- 考虑把你的领域扩大。我有超过45个字符的电子邮件地址。(即,由于TMDA)
- 去掉AUTO_增量,它是针对整数的,对于手动填充的字段没有意义
- 不需要为NULL,因为主键使其隐式
- 考虑把你的领域扩大。我有超过45个字符的电子邮件地址。(即,由于TMDA)
president@whitehouse.gov+1
?谢谢,我不知道comp站点是什么,但我想自动增量现在除了INT之外不起作用。好的,谢谢,它会起作用:)我需要9分钟才能接受你的回答。例如,复合主键允许a@b.com,071717171及a@b.com,07272,即唯一性跨两个字段。我想您可能想要最后一个选项,它将确保两个字段的唯一性,independently@nadal自动增量适用于数字类型。mysql将如何处理president@whitehouse.gov+1
?而且也