当我执行以下命令时:
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表:
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,最好像这样进行查询:
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子句都使用索引.
错误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)
这里需要一些帮助.
为什么SELECT *
不好做法?如果添加了您想要的新列,是不是意味着要更改的代码更少?
我知道这SELECT COUNT(*)
是一些DB上的性能问题,但是如果你真的想要每一列呢?
我有一堆产品订单,我正在尝试按日期分组并总结该日期的数量.如何在不考虑时间的情况下按月/日/年进行分组?
3/8/2010 7:42:00
应该与...分组 3/8/2010 4:15:00
在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_ColName
或DF_SmoeTable_ColName
.
如何在没有任何SQL错误的情况下删除默认约束?默认约束名称不会显示在INFORMATION_SCHEMA表中,这会使事情变得有点棘手.
因此,类似于"删除此表/列中的默认约束"或"删除DF_SmoeTable_ColName
",但如果无法找到它,则不会出现任何错误.
我想在localhost中删除root用户的密码.我怎样才能做到这一点?我错误地设置了root用户的密码.这就是phpmyadmin给出错误的原因:
#1045 - Access denied for user 'root'@'localhost' (using password: NO)
sql ×8
mysql ×6
database ×2
sql-server ×2
t-sql ×2
byte ×1
exists ×1
performance ×1
quotes ×1
varchar ×1