gpt4 book ai didi

mysql - CREATE TABLE 不适用于 InnoDB,但适用于 MyISAM

转载 作者:行者123 更新时间:2023-11-29 10:39:37 25 4
gpt4 key购买 nike

我有这张表:

CREATE TABLE `peso_tec_dt_aj` (
`idade` int(11) DEFAULT NULL,
`tecnico` varchar(50) DEFAULT NULL,
`obt` double DEFAULT NULL,
`pad` decimal(4,3) DEFAULT NULL,
`aves_peso` int(11) DEFAULT NULL,
`data_domingo` datetime DEFAULT NULL,
`data_domingo_ajustada` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
KEY `peso_tec_dt_aj_idade_tecnico_index` (`idade`,`tecnico`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

如果我使用带有 ENGINE=MYSAM 语句的创建,则下面的查询有效,但如果我与引擎 InnoDB 一起使用,则以下查询无效。

如果我不进行聚合或者删除分组中的列字段data_domingo (DATETIME),它也可以工作:

CREATE TABLE bucket_15.resultado as (
select
peso_tec_dt_aj.idade,
peso_tec_dt_aj.tecnico,
(
ROUND(
SUM(peso_tec_dt_aj.obt * peso_tec_dt_aj.aves_peso) /
SUM(peso_tec_dt_aj.aves_peso), 3
)
) as campo_computeado
from bucket_15.peso_tec_dt_aj
group by
peso_tec_dt_aj.idade,
peso_tec_dt_aj.tecnico,
peso_tec_dt_aj.data_domingo
);

运行此查询后,MySQL 不会显示错误。没有 create table 的查询运行正常。

但是,上面的查询非常简单。为什么 MySQL 无法创建包含此列和数据的表?

MySQL版本:5.7

这里有一些屏幕截图,向您展示使用相同的查询,如果引擎不是 MYISAM,则没有结果。

FIRST IMAGE:运行我将在语句 CREATE WITH SELECT 上使用的查询,使用两个引擎:MYISAM 和 InnoDB。

enter image description here

第二张图像:运行不带 ENGINE=MYISAM 的查询。上面的结果预计会出现在新表 resultado 上,但事实并非如此:没有错误。

enter image description here

第三张图片:WITH ENGINE=MYISAM - 表 resultado神奇地创建

enter image description here

最佳答案

这个创建表在我的版本 5.6.35 上工作正常,没有任何错误

CREATE TABLE `peso_tec_dt_aj` (
`idade` int(11) DEFAULT NULL,
`tecnico` varchar(50) DEFAULT NULL,
`obt` double DEFAULT NULL,
`pad` decimal(4,3) DEFAULT NULL,
`aves_peso` int(11) DEFAULT NULL,
`data_domingo` datetime DEFAULT NULL,
`data_domingo_ajustada` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
KEY `peso_tec_dt_aj_idade_tecnico_index` (`idade`,`tecnico`)
) ENGINE=MYISAM DEFAULT CHARSET=latin1;

CREATE TABLE resultado as (
select
peso_tec_dt_aj.idade,
peso_tec_dt_aj.tecnico,
(
ROUND(
SUM(peso_tec_dt_aj.obt * peso_tec_dt_aj.aves_peso) /
SUM(peso_tec_dt_aj.aves_peso), 3
)
) as campo_computeado
from bucket_15.peso_tec_dt_aj
group by
peso_tec_dt_aj.idade,
peso_tec_dt_aj.tecnico,
peso_tec_dt_aj.data_domingo
) ENGINE=MYISAM DEFAULT CHARSET=latin1;

关于第二个查询,如果它不起作用,MySQL 应该将错误记录到终端或日志文件中。

在第二个创建查询中,名称中包含点。这就是它不起作用的原因。

关于mysql - CREATE TABLE 不适用于 InnoDB,但适用于 MyISAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45761382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com