作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这张表:
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。
第二张图像:运行不带 ENGINE=MYISAM 的查询。上面的结果预计会出现在新表 resultado
上,但事实并非如此:没有错误。
第三张图片:WITH ENGINE=MYISAM - 表 resultado
被神奇地创建
最佳答案
这个创建表在我的版本 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/
我是一名优秀的程序员,十分优秀!