我有一个包含 64m 行的表,在磁盘上占用了 4.3 GB 的数据。
每行大约有 30 个字节的整数列,加上一个NVARCHAR(255)
用于文本的变量列。
我添加了一个带有 data-type 的 NULLABLE 列Datetimeoffset(0)
。
然后我为每一行更新了这一列,并确保所有新的插入都在这一列中放置了一个值。
一旦没有 NULL 条目,我就运行这个命令来使我的新字段成为强制性的:
ALTER TABLE tblCheckResult
ALTER COLUMN [dtoDateTime] [datetimeoffset](0) NOT NULL
Run Code Online (Sandbox Code Playgroud)
结果是事务日志大小大幅增长——从 6GB 增加到超过 36GB,直到空间用完!
有没有人知道 SQL Server 2008 R2 到底在为这个简单的命令做些什么来导致如此巨大的增长?
null sql-server sql-server-2008-r2 alter-table transaction-log
我不得不将 MYSQL 中的一列更改为 NULL 到 NOT NULL,但是我得到了语法错误。我只想更改最后一列,已经进行了一些研究,但还没有找到解决方案,这可能很简单,但我是数据库新手,直到现在才意识到这一点。有谁能够帮助我?
ALTER TABLE glpi_ticketsatisfactions ALTER COLUMN comment BIGINT NOT NULL;
Run Code Online (Sandbox Code Playgroud)
错误:
[42000][1064] 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,在第 1 行的“BIGINT NOT NULL”附近使用正确的语法
CREATE TABLE
:
CREATE TABLE glpi_ticketsatisfactions
( id int(11) NOT NULL AUTO_INCREMENT,
tickets_id int(11) NOT NULL DEFAULT '0',
type int(11) NOT NULL DEFAULT '1',
ate_begin datetime DEFAULT NULL,
date_answered datetime DEFAULT NULL,
satisfaction int(11) DEFAULT NULL,
comment text COLLATE utf8_unicode_ci,
PRIMARY KEY (id),
UNIQUE KEY tickets_id …
Run Code Online (Sandbox Code Playgroud)