mysql建立表時,總是報1166Incorrect column name UId

時間 2022-03-14 00:05:05

1樓:模友石頭

create table `userinfo` (

`uid` int unsigned zerofill auto_increment primary key,

`schoolid` int not null ,

`companyid` int not null ,

`uname` varchar( 10 ) not null ,

`nickname` varchar( 10 ) not null ,

`ustate` varchar( 10 ) not null ,

`upass` varchar( 20 ) not null ,

`email` varchar( 50 ) not null ,

`headpic` varchar(100) not null ,

`randomcode` varchar( 20 ) not null ,

`regtime` varchar( 20 ) not null ,

`acttime` varchar( 20 ) not null ,

`qq` varchar( 10 ) not null ,

`msn` varchar( 50 ) not null ,

`gtalk` varchar( 50 ) not null ,

`resume` varchar( 100 ) not null ,

`hobby` varchar( 50 ) not null ,

`makefriend` varchar( 50 ) not null ,

`adress` varchar( 50 ) not null )

engine = myisam

執行ok 列名不允許有空格

2樓:

`uid ` int unsigned zerofill auto_increment primary key ,

根本不用加引號 直接去掉就好了

為什麼用mysql語句建立表老是提示錯誤

3樓:陌上龜

auto_increment 必須被定義為一個key,即應該加上primary key。

如create table guestbook(id int not null auto_increment primary key,username varchar(20),content varchar(20),sj date)

4樓:

自增列id必須為索引,可以是主鍵,或單獨設成索引,都可以

mysql建表時出現錯誤,**是1064 50

5樓:彌訪冬

錯誤原因:指令碼中資料表的第五個欄位describe為mysql的關鍵字,不能作為欄位名;

mysql建立資料表的語法為:

以下為建立mysql資料表的sql通用語法:

create table table_name (column_name column_type);

以下例子中我們將在 runoob 資料庫中建立資料表runoob_tbl:

create table if not exists `runoob_tbl`(

`runoob_id` int unsigned auto_increment,

`runoob_title` varchar(100) not null,

`runoob_author` varchar(40) not null,

`submission_date` date,

primary key ( `runoob_id` )

)engine=innodb default charset=utf8;

注:欄位名命名可以為字母數字,下劃線,且不能為mysql的關鍵字

6樓:匿名使用者

mysql就沒有varchar2型別,

varchar2是oracle裡面的,換了

mysql新增外來鍵時總是報錯

7樓:匿名使用者

我觀察到你的   emp  表的  username  列,  已經是   有  uni   的  key 了

也就是那個  emp  表的  username  是唯一的了。

因此, 理論上

foreign key(username) references emp(username),

這個應該沒有問題。

但是那個

foreign key (name) references emp (name)

由於   emp  表的  name  列,   是允許有重複行的。

因此你無法建立外來鍵。

下面就是一個   失敗的例子**, 你可以參考一下

-- 建立測試主表.  無主鍵.

create table test_main2 (

id      int   not  null,

value   varchar(10)

);-- 建立測試子表.

create table test_sub2 (

id      int   not  null,

main_id int,

value   varchar(10),

primary key(id)

);-- 插入測試主表資料.

insert into test_main2(id, value) values (1, 'one');

insert into test_main2(id, value) values (2, 'two');

-- 插入測試子表資料.

insert into test_sub2(id, main_id, value) values (1, 1, 'oneone');

insert into test_sub2(id, main_id, value) values (2, 2, 'twotwo');

mysql> alter table test_sub2

->    add constraint main_id_cons2

->    foreign key (main_id)

->    references  test_main2(id);

error 1005 (hy000): can't create table 'test.#sql-608_1' (errno: 150)

預設情況下,無法建立外來鍵

需要建立 unique 約束

mysql> alter table test_main2

->   change column id id int unique;

query ok, 2 rows affected (0.17 sec)

records: 2  duplicates: 0  warnings: 0

unique 約束建立完畢後,外來鍵建立成功。

mysql> alter table test_sub2

->    add constraint main_id_cons2

->    foreign key (main_id)

->    references  test_main2(id);

query ok, 2 rows affected (0.14 sec)

records: 2  duplicates: 0  warnings: 0

8樓:小磊磊

當發生此類的錯誤的時候,從三個角度入手:

1、確保主表有主鍵。

2、確保主從表資料引擎為innodb型別。

3、確定從表外來鍵欄位型別與主表一致。

9樓:匿名使用者

幾種可能

欄位不一樣,好比你這個表 int(8) 你連線的外來鍵 是int(10) 這就會報錯

你的這個外來鍵,不是那邊的主鍵,非空的

外來鍵必須是唯一的鍵值,不能重複

外來鍵不能設定為預設值 如default 0

10樓:

外來鍵引用的列必須是鍵列,目測emp的name列沒有定義為鍵列。將emp的name列定義為鍵列吧

mysql資料庫怎樣建立表,MYsql資料庫怎樣建立表?

歐覓潘安然 比如要建立學生表表名為student,學生表有欄位學號 no 年齡 age create table student no int primary key 主鍵 age int 執行下就建立好了 隨便舉的例子,明白吧?謝謝採納! create database cookbook 建立一個...

怎麼用mysql建立索引的時候報innodb present

mysql 5.6.4裡才新增了innodb引擎的fulltext索引 不能升級mysql版本的話 推薦用lucene elasticsearch比較容易部署 或sphinx這樣的第三方解決方案。如果這個表更新不頻繁,查詢量不大,又趕時間,可以用觸發器 定時任務或者其他類似的dba技巧建立支援全文索...

oracle為表建立外來鍵時沒有命名foreign key約束

繩樹枝浮辰 不用刪除表,資料庫會自動命名,名字可能是sys 這個能找到。如果有plsql那麼可以通過plsql的一個功能直接查到建表語句,這裡就有名字。要麼可以通過相關檢視根據欄位查到。檢視是user constraints或者dba constraints,裡面的欄位記不清楚了,自己查查吧。 匍地...