Mysql
不知道為什麼 MySQL 不創建具有主鍵約束的表
我不明白為什麼 MySQL 顯示此錯誤:
#1064 - 您的 SQL 語法有錯誤;檢查與您的 MySQL 伺服器版本相對應的手冊,以在第 1 行的 ‘CONSTRAINT (uname_pk) PRIMARY KEY, pwd Varchar(50), fname Varchar(50), lname ’ 附近使用正確的語法
這是查詢:
創建表 uinfo_master(uname Varchar(50) NOT NULL CONSTRAINT (uname_pk) PRIMARY KEY, 密碼 Varchar(50), fname Varchar(50), lname Varchar(50), 電子郵件 Varchar(50), phno Varchar(50), 地址 Varchar(200), 城市 Varchar(50), 狀態 Varchar(50), 銷 Varchar(50), 國家 Varchar(50));
我的查詢有什麼問題,請指出我的錯誤。
正確的語法,對你的風格的改變最小:
create table uinfo_master( uname Varchar(50) NOT NULL, CONSTRAINT uname_pk PRIMARY KEY (uname), pwd Varchar(50), fname Varchar(50), lname Varchar(50), email Varchar(50), phno Varchar(50), address Varchar(200), city Varchar(50), state Varchar(50), pin Varchar(50), country Varchar(50));
您不能
CONSTRAINT
在與列定義相同的行上使用 PK 的語法。請參閱CREATE TABLE語法:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) } create_definition: col_name column_definition | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option] ...
定義列本身是在
col_name column_definition
語法的版本上完成的。後面的|
在文件中代表 OR,這意味著替代的 CREATE TABLE(逗號分隔)“行”可以使用以 開頭的語法CONSTRAINT
,它可以選擇包含一個“符號”(這就是括號的含義:可選),然後PRIMARY KEY
是可選的一個index_type
,然後是列本身,在括號中。從外觀上看,你試圖在一條線上完成所有這些,這就是你的問題所在。您可以在定義列的行上將列聲明為 PRIMARY KEY,但不能使用 CONSTRAINT 語法來執行此操作。