通过 PHP

问题描述

CREATE TABLE IF NOT EXISTS customers_data (
 id int(20) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,INVOICE_ID varchar(50) NOT NULL,_NAME varchar(255) NOT NULL,MOBILE bigint(12) NOT NULL,GSTIN varchar(20) NOT NULL,_ADDRESS varchar(255) NOT NULL,EMAIL varchar(255) NOT NULL,_STATE varchar(50) NOT NULL,MODE varchar(10) NOT NULL,_DATE date NOT NULL DEFAULT current_timestamp(),total_qty int(11) NOT NULL,total_amount decimal(40,2) NOT NULL,total_sc_gst decimal(30,Round_Off float(2,grand_total decimal(50,0) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

customer_data 创建成功。

但是 order_data 中存在关于外键的错误。记住我想同时创建这两个表。

CREATE TABLE IF NOT EXISTS order_data (
 id int(20) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,cus_id int(20) NOT NULL,ITEM varchar(255) NOT NULL,HSN varchar(50) NOT NULL,QTY int(15) NOT NULL,RATE decimal(40,S_C_GST decimal(30,TOTAL decimal(50,_DATE timestamp NOT NULL DEFAULT current_timestamp(),FOREIGN KEY(cus_id) REFERENCES customers_data(id)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

我收到了这个错误

#1005 - 无法创建表测试。 (errno: 150 "外 键约束的格式不正确")

解决方法

我认为您正在使用 MySQL。您尚未使用 Constraint with Foreign Key。试试下面的查询。

CREATE TABLE IF NOT EXISTS order_data (
 id int(20) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,cus_id int(20) NOT NULL,ITEM varchar(255) NOT NULL,HSN varchar(50) NOT NULL,QTY int(15) NOT NULL,RATE decimal(40,2) NOT NULL,S_C_GST decimal(30,TOTAL decimal(50,_DATE timestamp NOT NULL DEFAULT current_timestamp(),**CONSTRAINT <FK_NAME>** FOREIGN KEY(cus_id) REFERENCES customers_data(id)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
,

“同时”制作表格不是您需要解决的问题,(无论如何这是不可能的)。

如果数据类型与引用列的数据类型不同,则不能创建外键。

order_data.cus_id 是一个 INT 列。

customers_data.id 是一个 INT UNSIGNED 列。

更改一种或另一种数据类型,使它们相同。