我建立了两个表: 
create table g_cardapply  #身份证申请表
 ( g_applyno varchar(8)  primary key,#申请单号(关键字)
   g_applydate bigint(8),#申请日期
   g_state varchar(2)   #申请状态
 )
上面这个用sql脚本文件创建成功
下面这个在创建时提示 列g_applyno,不存在,无法创建表!
  create table g_cardapplydetail
  (
    g_applyno varchar(8),#申请单号(关键字)
  g_name varchar(30),#申请人姓名
  g_idcard varchar(18) primary key,#申请人身份证号
  g_state varchar(2),#申请状态
    primary key (g_applyno,g_idcard),
    foreign key (g_applyno) references g_cardapply(g_applyno) 
)

解决方案 »

  1.   

    * 两个表必须是InnoDB表类型。
        * 使用在外键关系的域必须为索引型(Index)。
        * 使用在外键关系的域必须与数据类型相似。
      

  2.   

    mysql> create table g_cardapplydetail
        -> ( g_applyno varchar(8),
        -> g_name varchar(30),
        -> g_idcard varchar(18),
        -> g_state varchar(2),
        -> primary key (g_applyno,g_idcard),
        -> foreign key (g_applyno) references g_cardapply(g_applyno)
        -> )
        -> ;
    Query OK, 0 rows affected (0.19 sec)
      

  3.   

     CREATE TABLE g_cardapplydetail(g_applyno VARCHAR(8),g_name VARCHAR(30),g_idcard VARCHAR(18),g_state VARCHAR(2),PRIMARY KEY (g_applyno,g_idcard),
       FOREIGN KEY (g_applyno) REFERENCES g_cardapply(g_applyno)  
    )