无法在mysql中创建关系 - 在id_produk上创建外键时出错(检查数据类型)

时间:2017-05-26 17:34:15

标签: mysql sql

这是我的表:

CREATE TABLE `pesanan` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ref_number` varchar(50) NOT NULL DEFAULT '',
  `id_produk` int(11) NOT NULL,
  `id_user` int(11) NOT NULL,
  `qty` int(11) NOT NULL,
  `total` varchar(50) NOT NULL DEFAULT '',
  `tanggal` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;

我想创建一个id_produk到table produk.id和id_user到user.id的关系,这是另一个表:

CREATE TABLE `produk` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `id_kategori` int(11) NOT NULL,
  `status` varchar(10) NOT NULL DEFAULT '',
  `slug` varchar(100) NOT NULL DEFAULT '',
  `judul` varchar(100) NOT NULL DEFAULT '',
  `harga` varchar(10) DEFAULT '',
  `target` int(11) DEFAULT NULL,
  `desc` text,
  `cover` varchar(100) DEFAULT NULL,
  `tanggal` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=latin1;

和用户表

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `suspended` int(11) DEFAULT NULL,
  `level` varchar(11) DEFAULT NULL,
  `nama` varchar(100) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `password` varchar(100) DEFAULT NULL,
  `alamat` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=latin1;

当我尝试关联它时,它给了我这个错误:

在id_produk上创建外键时出错(检查数据类型)

1 个答案:

答案 0 :(得分:0)

两个表中的列应具有完全相同的数据类型。在你的情况下," produk"和"用户"表格是无符号的,这意味着它们从0到4294967295,但在" pesanan"表格已签署,表示从-2147483648到2147483647。查看更多here

如果服务器允许您创建此类外键,则可能会创建一些情况,例如,添加了一个用户,并且ID为2147483648,这些情况在" pesanan"中无法引用。表

您应该更改" id_produk"和" id_user" " pesanan"中的列表是无符号的。