Laravel迁移:唯一键太长,即使已指定
我正在尝试在Laravel迁移用户表.当我运行迁移时,我会收到此错误: [ILLUMINES \ DATABASE \ QUERYEXCEPTION] SQLSTATE [42000]:语法错误 或违反访问:指定密钥的1071太长;最大钥匙长度 IS是767字节(SQL:Alter Table users添加唯一 users_email_uniq(email)) 我的迁移如下: Schema::create('users', function(Blueprint $table) { $table->increments('id'); $table->string('name', 32); $table->string('username', 32); $table->string('email', 320); $table->string('password', 64); $table->string('role', 32
2 2023-05-25
编程技术问答社区
Oracle唯一约束和唯一索引
有人可以澄清没有唯一约束(Oracle)的独特索引的目的是什么? 例如, create table test22(id int, id1 int, tmp varchar(20)); create unique index idx_test22 on test22(id); insert into test22(id, id1, tmp) values (1, 2, 'aaa'); // ok insert into test22(id, id1, tmp) values (1, 2, 'aaa'); // fails, ORA-00001: unique // constraint (TEST.IDX_TEST22) violated 到目前为止,看起来有一个约束.但是 create table test33(id int not null primary key, test22_id int not null, foreign key(test22_id
4 2023-05-12
编程技术问答社区
MySQL问题-唯一密钥不能正常运行,还是我理解错了?
我正在尝试创建一个可能包括四个不同部分中的任何一个的关系,但是任何相同部分的集合都应以唯一的方式处理. 示例: 任务必须具有分配的公司,可以选择具有分配的位置,工作组和程序. 任务可能没有没有位置的工作组. 假设我们有公司A,B,C;位置x,y,z;工作组I,J,K和程序1,2,3. 因此有效的关系可能包括 a -x -i -1 A -Z -2 经过 C C -3 b -z -k 但无效的关系将包括 A -K(无位置的工作组) Y -K -1(没有公司) 所以,要创建我的表格,我创建了 companyID INT NOT NULL, FOREIGN KEY companyKEY (companyID) REFERENCES company (companyID), locationID INT, FOREIGN KEY locationKEY (locationID) REFERENCES location (locationID), workgrou
2 2023-04-30
编程技术问答社区
Mongoose唯一索引不工作
我不希望重复的用户名能够在我的网站上注册.因此,我将类似的东西放在猫鼬模型中: var userSchema = new mongoose.Schema({ username: { type: String, index: { unique: true }}, password: String }); 但是,当i create在控制器中像下面的新用户一样,它不会引发异常并创建重复. mongoose.model('User').create({ username : email, password : password }, function(err, user) { if (err) { // WHY DOES IT NOT THROW ERROR AND GET HERE? } }); 我已经尝试重新启动我的申请和蒙古流程. 解决方案 我终于找到了这个问题的修复程序,我也有 您需要 np
0 2023-04-26
编程技术问答社区
我想实现的是不允许用户评价超过一次的东西。
我使用了使用iPaddress方式的其他人的代码.但是,我想使用一个检查当前用户ID和ID号的代码. $ipaddress = md5($_SERVER['REMOTE_ADDR']); // here I am taking IP as UniqueID but you can have user_id from Database or SESSION /* Database connection settings */ $con = mysqli_connect('localhost','root','','database'); if (mysqli_connect_errno()) { echo " Connection failed:".mysqli_connect_error()." \n"; } /* end of the connection */ if (isset($_POST['rate']) && !empty($_POST['r
2 2023-04-19
编程技术问答社区
哪个独特的ID用于博客和评论?
这是一个问题,它源于这里的另一个问题的后果:最好有两个单独的用户表或一个? 假设我有两种类型的用户,一个作者和一个读者,每个用户都存储在键入的关系表中: TABLE Accounts { id email password salt created modified } TABLE reader { id user_id ... } TABLE author { id user_id ... } 作者发布博客时,我是否应该使用作者表中的唯一ID进行标记博客,或者是帐户表中的唯一ID?读者评论也是如此 - 我应该使用读者表唯一ID或帐户表唯一ID标记评论? 因此,基本上是: TABLE Blogs { id author_id } 或 TABLE Blogs { id account_id } 哪个 以后不太可能咬人?
16 2023-04-19
编程技术问答社区
如何找到下一个免费的唯一4位数号码
在我的数据库应用程序中,我需要为每个客户提供一个唯一的4位数字字段.直到9999年,我才能使用自动启动,但是之后,我将不得不重复使用已删除的客户数量(在给定时间不会有超过5000个客户,但一生中可能有超过9999个客户系统). 问题1:是否有(我的)SQL语句可以找到下一个可重复使用的免费号码? 问题2:如果我得到该号码,将其分配给新客户并保存一项交易,同一时间进行类似的交易将由数据库顺序进行,以便数字不会碰撞,正确,正确? 解决方案 您最好存储一个具有所有10,000个可能值的表,并且每个表上都有一个"使用"标志.这样,释放重复使用的数字是一个简单的更新,以设置" inuse = false". 还使找到最低的可用值一个简单 SELECT idstring FROM idstringtable ORDER BY idstring ASC WHERE (available = 1) LIMIT 1 使用适当的锁/交易做到这一点将阻止两个或多个请求获得相
0 2023-04-19
编程技术问答社区
在MySQL中用条件值检查进行约束
我需要添加一个基于组合和价值的约束检查 我的表结构是 CREATE TABLE IF NOT EXISTS `ContactPhone` ( `ContactPhoneId` int(10) unsigned NOT NULL, `ContactId` int(11) NOT NULL, `PhoneId` smallint(5) unsigned NOT NULL, `Status` tinyint(1) NOT NULL DEFAULT '1' ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -- -- Indexes for dumped tables -- -- -- Indexes for table `ContactPhone` -- ALTER TABLE `ContactPhone` ADD PRIMARY KEY (`ContactPhoneId`); -- -- A
0 2023-04-18
编程技术问答社区
生成新的唯一ID号码,同时排除以前在R中生成的ID号码
我想在数据库中为行生成独特的ID.我将不断地向该数据库添加条目,因此我需要同时生成新ID.虽然我的数据库相对较小,并且复制随机ID的机会很小,但我仍然想在程序化的故障安全中构建以确保我永远不会生成过去已经使用过的ID. > 对于初学者,以下是一些示例数据,我可以使用启动示例数据库: library(tidyverse) library(ids) library(babynames) database
22 2023-04-18
编程技术问答社区
MySQL关于重复键的更新
我使用重复密钥更新上的MySQL查询. 我遇到了错误: mySQL Error: 1062 - Duplicate entry 'hr2461809-3' for key 'fname' 桌子看起来像这样: id int(10) NOT NULL default '0', picid int(10) unsigned NOT NULL default '0', fname varchar(255) NOT NULL default '', type varchar(5) NOT NULL default '.jpg', path varchar(255) NOT NULL default '', PRIMARY KEY (id), UNIQUE KEY fname (fname), KEY picid (propid) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 打破的查询是: INS
4 2023-04-17
编程技术问答社区
MySQL。使用额外的HASH字段的UNIQUE文本字段
在我的mysql db中,我的表格定义为: CREATE TABLE `mytablex_cs` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `tag` varchar(6) COLLATE utf8_bin NOT NULL DEFAULT '', `value` text COLLATE utf8_bin NOT NULL, PRIMARY KEY (`id`), KEY `kt` (`tag`), KEY `kv` (`value`(200)) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_bin 我需要在value字段上实现唯一的约束(键). 我知道,对于blob>>或text字段的整个值中的唯一索引尚无法定义一个唯一的索引,但是有一张票(?)打开以实现此类功能(请参阅现在,我想使用类似的方
4 2023-04-17
编程技术问答社区
我如何创建一个重复使用我的模型的唯一键的序列化器?
我正在使用Python 3.7,Django 2.2,Django Rest框架和Pytest.我有以下模型,如果它通过其唯一密钥存在,我想重新使用现有模型... class CoopTypeManager(models.Manager): def get_by_natural_key(self, name): return self.get_or_create(name=name)[0] class CoopType(models.Model): name = models.CharField(max_length=200, null=False, unique=True) objects = CoopTypeManager() 然后,我创建了以下序列化器来从REST数据生成此模型 class CoopTypeSerializer(serializers.ModelSerializer): class Meta:
8 2023-04-17
编程技术问答社区
MyISAM唯一键在64字节时被切断,导致碰撞
我有一个MySQL表,将URL存储为独特的键.我开始在钥匙上发生碰撞,因为似乎键本身只是任何URL的前64个字节(或字符(如果您愿意的话,则是拉丁语1的)).因此,如果URL超过64个字符,并且我已经有一个类似的URL会引发错误. 例如: SELECT l.link_id FROM mydb.links l WHERE url = 'http://etonline.com/tv/108475_Charlie_Sheen_The_People_Have_Elected_Me_as_Their_Leader/index.html' 引发此错误: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'http://etonline.com/tv/108475_Charlie_Sheen_The_People_Have_Elec' for key 'url' Myisam不应该具
4 2023-04-17
编程技术问答社区
mySQL:默认情况下,主键是唯一的吗?
如果我将列定义为MySQL中的A 主键,默认情况下它也是唯一键,还是我还需要将其定义为 (如果我希望它是唯一的)? 我看到了这个问题有什么区别b/w主键和唯一的键解释了两者之间的区别,但没有完全回答我的问题. PK默认是英国,还是我需要明确定义它? 解决方案 主键始终是唯一的在每个SQL中.您不必明确将其定义为唯一的. 在旁注:您只能在表中具有一个主键,并且永远不会允许null值.另外,您只能在表中拥有一个主要的密钥约束(因为创建主键的目的是唯一地识别表中的行),但是您可以在表中的一个唯一的键约束. . 示例: 员工详细信息表以empid为主要钥匙,而empphoneno作为唯一钥匙. 其他解决方案 主键始终是唯一的.不仅在mysql中. 因此,您不需要任何其他唯一键. 其他解决方案 请注意,复合键可能会导致混乱:确实,主键可以是复合键,DESCRIBE将将所有复合键组件显示为主要密钥: > DESCRIBE foobar;
20 2023-04-16
编程技术问答社区
如何从mysql表中删除唯一键
我需要从我的MySQL表中删除一个唯一的键.如何使用MySQL查询删除该问题. 我尝试过,但它不起作用 alter table tbl_quiz_attempt_master drop unique key; 请帮助我 谢谢 解决方案 所有键均为命名,您应该使用类似的东西 - ALTER TABLE tbl_quiz_attempt_master DROP INDEX index_name; 丢弃主密钥,使用此 - ALTER TABLE tbl_quiz_attempt_master DROP INDEX `PRIMARY`; Alter Table语法. 其他解决方案 首先,您需要知道索引的确切名称(在这种情况下为唯一键)才能删除或更新. 索引名称通常与列名相同.如果在列上应用了多个索引,则MySQL会自动编号到列名称以创建唯一的索引名称. 例如,如果在名为customer_id 的列上应用了2个索引 第一
4 2023-04-16
编程技术问答社区
MySQL。当前选择不包含唯一列。网格编辑、复选框、编辑、复制和删除功能不可用
我已经阅读了有关我问题的所有帖子.但是什么都没有解决. 问题: 当运行上述查询时,会出现下面的警告. 电流选择不包含唯一的列.网格编辑,复选框,编辑,复制和删除功能不可用. 下面是我的查询. SELECT ST.stock_code, S.supplier_name, I.item_name, P.avail_qty, SL.unit_price, P.expire_date FROM purchase_items P INNER JOIN stock ST ON P.stock_id = ST.stock_id INNER JOIN suppliers S ON ST.sup_id = S.sup_id INNER JOIN items I ON P.item_id = I.item_id INNER JOIN sales SL ON P.item_id = SL.item_id WHERE (P.expire_date > (NOW() + INT
40 2023-04-16
编程技术问答社区
一个空的SQL表是否有一个超级键?是否每个SQL表都有一个?
我知道超键在SQL中意味着什么,但我有以下问题: 空的SQL表总是有超键吗? 每个SQL表总是都有超键吗? 解决方案 tl; dr " superkey"是 rm(关系数据模型)术语. SQL没有标准用途. SQL表的超键可能非正式地说为您可以声明primary key或unique not null的列集,然后当表最多可以保留表(尽管您无法声明)时,也许{}也许{}. "合理地非正式",因为SQL表不是RM关系.但是,如果一张桌子没有重复的行,也没有零值,那么我们可以合理地说这是一个关系,并且像每个关系一样,它具有一个或多个超级钥匙. A 基础关系的超键的定义或关系表达式考虑了它可以持有的所有可能值,因此其当前值不会影响其超级行动.根据SuperKey的定义,在一个空的关系中 value 每个属性的每个子集都是SuperKey. 关系" superkey" 在数学中,"关系"的一个含义是类似于行的"元组"的桌子,它们是值列表.它代表关系(船)/协会 - 也称
8 2023-04-13
编程技术问答社区
在数据库设计中使用用户名作为主键不好吗?
我被一个朋友告诉我: 您使用什么唯一的钥匙?我希望你 没有保存整个用户名 ---这将消耗太多的桌子空间!为每个分配唯一的用户ID (唯一)用户名并保存此userId (应该是整数未签名 auto_increment或bigint未签名 自动递增).别忘了 创建一个参考 外键(userID)参考 usertable(userID)在所有表中 使用UserId. 上述语句正确吗?为什么或为什么不 解决方案 我认为他是对的(出于错误的原因),因为主键无法改变,但是username可以改变.因此,您应该使用userid,因为它不会更改. 其他解决方案 他出于错误的原因是正确的.表空间是次要的事实,即您的应用程序后来可能要求更改用户名,甚至停止唯一(您可以设想不需要唯一的用户名,例如堆栈溢出),因此您的应用程序需要重大的重构和数据迁移而不是另一个(整数PK)情况的光变化.
0 2023-04-08
编程技术问答社区
MySQL-使一对值唯一
i有一个具有两个int值的表.这些ID可以在表中出现多次,但是它们在一起只能出现一次. 是否有一种方法可以使一对值唯一并允许单个值多次显示? 作为后续行动,如果可能的话,这对值可以用作钥匙吗?我目前有一个第三列,用于我的密钥的唯一自动增量值. 解决方案 它称为复合键. 如果要将实际的PK更改为复合的PK,请使用 Alter table drop PRIMARY KEY; Alter table drop COLUMN ; Alter table add [constraint ] PRIMARY KEY (, ); 您还可以添加一个唯一的约束(您的PK将是相同的,并且唯一的对...必须是唯一的). alter table add
14 2023-04-08
编程技术问答社区
#1062-重复条目''为键'unique_id'时试图添加UNIQUE KEY(MySQL)。
在尝试添加唯一键时,我在MySQL上有错误.这是我想做的.我有一个名为" unique_id"的列,即varchar(100).表上没有定义索引.我遇到了这个错误: #1062 - Duplicate entry '' for key 'unique_id' 当我尝试添加一个唯一的密钥时.这是我如何在phpmyadmin中进行设置的屏幕截图: 这是由phpmyadmin生成的mySQL查询: ALTER TABLE `wind_archive` ADD `unique_id` VARCHAR( 100 ) NOT NULL FIRST , ADD UNIQUE ( `unique_id` ) 我过去遇到了这个问题,从未解决过,所以我只是从头开始重建桌子.不幸的是,在这种情况下,我无法做到这一点,因为表中已经有很多条目.感谢您的帮助! 解决方案 错误说明了一切: Duplicate entry '' 因此运行以下查询: SELECT
4 2023-04-08
编程技术问答社区