MySQL中的唯一约束(UNIQUE Constraint)用于确保表中的某一列或多列的组合值是唯一的。当你在表中定义了一个唯一约束,MySQL会自动为该列或列组合创建一个唯一索引,以确保这些列的值不会重复。
假设我们有一个用户表 users
,我们希望确保用户的邮箱地址是唯一的:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL
);
如果我们希望确保用户名和邮箱地址的组合是唯一的:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
password VARCHAR(255) NOT NULL,
UNIQUE (username, email)
);
原因:违反了唯一约束。
解决方法:
import mysql.connector
try:
conn = mysql.connector.connect(user='user', password='password', host='host', database='database')
cursor = conn.cursor()
query = "INSERT INTO users (username, email, password) VALUES (%s, %s, %s)"
values = ('user1', 'user1@example.com', 'password123')
cursor.execute(query, values)
conn.commit()
except mysql.connector.IntegrityError as err:
print(f"Error: {err}")
finally:
cursor.close()
conn.close()
解决方法:
使用 SHOW CREATE TABLE
命令查看表的创建语句,可以看到唯一约束的定义。
SHOW CREATE TABLE users;
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云