小编OMG*_*ies的帖子

#1071 - 指定密钥太长; 最大密钥长度为767字节

当我执行以下命令时:

ALTER TABLE `mytable` ADD UNIQUE (
`column1` ,
`column2`
);
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

#1071 - Specified key was too long; max key length is 767 bytes
Run Code Online (Sandbox Code Playgroud)

有关column1和column2的信息:

column1 varchar(20) utf8_general_ci
column2  varchar(500) utf8_general_ci
Run Code Online (Sandbox Code Playgroud)

我认为varchar(20)只需要21个字节,而varchar(500)只需要501个字节.所以总字节数是522,小于767.那么为什么我会得到错误信息呢?

#1071 - Specified key was too long; max key length is 767 bytes
Run Code Online (Sandbox Code Playgroud)

mysql varchar byte mysql-error-1071

521
推荐指数
23
解决办法
57万
查看次数

您无法在FROM子句中指定要更新的目标表

我有一个简单的mysql表:

CREATE TABLE IF NOT EXISTS `pers` (
  `persID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(35) NOT NULL,
  `gehalt` int(11) NOT NULL,
  `chefID` int(11) DEFAULT NULL,
  PRIMARY KEY (`persID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

INSERT INTO `pers` (`persID`, `name`, `gehalt`, `chefID`) VALUES
(1, 'blb', 1000, 3),
(2, 'as', 1000, 3),
(3, 'chef', 1040, NULL);
Run Code Online (Sandbox Code Playgroud)

我试图运行以下更新,但我只得到错误1093:

UPDATE pers P 
SET P.gehalt = P.gehalt * 1.05 
WHERE (P.chefID IS NOT NULL 
OR gehalt < 
(SELECT (
    SELECT MAX(gehalt * 1.05) 
    FROM pers …
Run Code Online (Sandbox Code Playgroud)

mysql sql mysql-error-1093

353
推荐指数
9
解决办法
25万
查看次数

VARCHAR和CHAR有什么区别?

MySQL中的VARCHAR和CHAR有什么区别?

我正在尝试存储MD5哈希值.

mysql sql

340
推荐指数
11
解决办法
59万
查看次数

测试MySQL表中是否存在行的最佳方法

我试图找出表中是否存在行.使用MySQL,最好像这样进行查询:

SELECT COUNT(*) AS total FROM table1 WHERE ...
Run Code Online (Sandbox Code Playgroud)

并检查总数是否为非零或是否更好地执行这样的查询:

SELECT * FROM table1 WHERE ... LIMIT 1
Run Code Online (Sandbox Code Playgroud)

并检查是否有任何行返回?

在两个查询中,WHERE子句都使用索引.

mysql sql performance exists

313
推荐指数
6
解决办法
34万
查看次数

错误1046没有数据库选中,如何解决?

错误SQL查询:

--
-- Database: `work`
--
-- --------------------------------------------------------
--
-- Table structure for table `administrators`
--
CREATE TABLE IF NOT EXISTS `administrators` (

`user_id` varchar( 30 ) NOT NULL ,
`password` varchar( 30 ) NOT NULL ) ENGINE = InnoDB DEFAULT CHARSET = latin1;
Run Code Online (Sandbox Code Playgroud)

MySQL说:

#1046 - No database selected
Run Code Online (Sandbox Code Playgroud)

这里需要一些帮助.

mysql sql mysql-error-1046

269
推荐指数
9
解决办法
70万
查看次数

为什么SELECT*被认为有害?

为什么SELECT *不好做法?如果添加了您想要的新列,是不是意味着要更改的代码更少?

我知道这SELECT COUNT(*)是一些DB上的性能问题,但是如果你真的想要每一列呢?

sql database

241
推荐指数
3
解决办法
7万
查看次数

206
推荐指数
5
解决办法
15万
查看次数

如何在不考虑时间的情况下按日期时间列进行分组

我有一堆产品订单,我正在尝试按日期分组并总结该日期的数量.如何在不考虑时间的情况下按月/日/年进行分组?

3/8/2010 7:42:00 应该与...分组 3/8/2010 4:15:00

sql t-sql sql-server sql-server-2008

194
推荐指数
5
解决办法
23万
查看次数

如何在不知道其名称的情况下删除SQL默认约束?

在Microsoft SQL Server中,我知道查询是否存在列的默认约束并删除默认约束是:

IF EXISTS(SELECT * FROM sysconstraints
  WHERE id=OBJECT_ID('SomeTable')
  AND COL_NAME(id,colid)='ColName'
  AND OBJECTPROPERTY(constid, 'IsDefaultCnst')=1)    
ALTER TABLE SomeTable DROP CONSTRAINT DF_SomeTable_ColName
Run Code Online (Sandbox Code Playgroud)

但由于以前版本的数据库中的拼写错误,约束的名称可能是DF_SomeTable_ColNameDF_SmoeTable_ColName.

如何在没有任何SQL错误的情况下删除默认约束?默认约束名称不会显示在INFORMATION_SCHEMA表中,这会使事情变得有点棘手.

因此,类似于"删除此表/列中的默认约束"或"删除DF_SmoeTable_ColName",但如果无法找到它,则不会出现任何错误.

sql t-sql sql-server

190
推荐指数
5
解决办法
16万
查看次数

如何删除MySQL root密码

我想在localhost中删除root用户的密码.我怎样才能做到这一点?我错误地设置了root用户的密码.这就是phpmyadmin给出错误的原因:

#1045 - Access denied for user 'root'@'localhost' (using password: NO)

mysql mysql-error-1045

184
推荐指数
2
解决办法
23万
查看次数