小编Ste*_*ood的帖子

您可以在"将alter table提交到存储引擎"状态下回滚查询吗?

我们有一个包含7000万行的InnoDB表,我们一直在尝试运行一个alter table语句来修改和添加几列.查询似乎已经改变了表,现在处于"将alter table提交到存储引擎"的状态.

START TRANSACTION;
ALTER TABLE table
  MODIFY COLUMN column1 int(11) NOT NULL DEFAULT 0,
  MODIFY COLUMN column2 tinyint(1) NOT NULL DEFAULT 1,
  ADD COLUMN column3 int(11),
  ADD COLUMN column4 int(11) NOT NULL DEFAULT 1,
  ADD COLUMN column5 varchar(255);
COMMIT;
Run Code Online (Sandbox Code Playgroud)

这已经过夜了,现在是19小时.我们没有启用性能架构,因此无法查看估计的完成时间.我担心的是查询正在做什么以及查询是否会在被杀死时回滚.我已经看到其他问题涉及到复制到tmp表或等待表锁的查询.但是,当alter table提交时,我找不到任何关于被卡住的事情.

在此状态下终止查询是否安全,如果查询被终止,它是否会成功回滚?

服务器正在运行MariaDB 10.2

mysql innodb mariadb

5
推荐指数
1
解决办法
687
查看次数

C# HttpClient 不处理 304/307 重定向

我正在尝试让 HttpClient 从网站中提取网站图标,并且在 99% 的情况下,此代码可以按预期工作:

var httpClient = new HttpClient();
httpClient.Timeout = TimeSpan.FromSeconds(10);

var response = await httpClient.GetAsync("https://www.tesco.com/favicon.ico");
response.EnsureSuccessStatusCode();
Run Code Online (Sandbox Code Playgroud)

我在几个网站上发现我的 GetAsync 方法只是超时,我相信这与其重定向有关。如果在控制台应用程序中运行上述代码,10 秒后会在 TaskCanceledException 和 IOException 中引发以下异常:

SocketException:由于线程退出或应用程序请求,I/O 操作已中止。

这个请求在 Postman 上完全正常,我尝试过 https 和 http 但没有成功。当访问该网站并使用 Chrome 的开发工具时,看起来如果您使用 http 而不是 https,它会返回 307 并将您重定向到 https 网站,然后返回 304。我不明白为什么 HttpClient 只是计时而不是给出有用的回应。

有什么办法让它发挥作用吗?我错过了一些简单的事情吗?

更新 - 2021-01-29

我在多个不同的 .NET 版本上进行了尝试,发现这可能是 HttpClient 的一个错误,因为此代码适用于 .NET Core 2.0,但不适用于 .NET Core 2.1。

已测试版本

  • .NET Framework 4.8:有效
  • .NET Core 1.0:有效
  • .NET Core 1.1:有效
  • .NET Core 2.0:有效
  • .NET Core 2.1:不起作用
  • .NET …

c# http-redirect dotnet-httpclient .net-core .net-5

5
推荐指数
1
解决办法
1595
查看次数