由于某些原因,当我try 添加这一个表aux时,它总是将@@@附加到information_schema.innodb_sys_tables中的表名.如果我用aux2代替,它工作得很好.为什么?我的意思见下文.

mysql>  select * from information_schema.innodb_sys_tables where name like '%aux%' and name like 'tsm%';
+----------+------------+------+--------+-------+-------------+------------+---------------+
| TABLE_ID | NAME       | FLAG | N_COLS | SPACE | FILE_FORMAT | ROW_FORMAT | ZIP_PAGE_SIZE |
+----------+------------+------+--------+-------+-------------+------------+---------------+
|    67408 | tsm/aux2   |    1 |     54 | 67394 | Antelope    | Compact    |             0 |
|    67407 | tsm/aux@@@ |    1 |     54 | 67393 | Antelope    | Compact    |             0 |
+----------+------------+------+--------+-------+-------------+------------+---------------+

我有两个脚本,除了表名之外都一样.

这是一个不起作用的方法:

CREATE TABLE `aux` (
  `AUXKEY` int(11) NOT NULL AUTO_INCREMENT,
  `AUXSTM` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXSTS` varchar(4) COLLATE latin1_general_cs DEFAULT NULL,
  `auxuid` varchar(50) COLLATE latin1_general_cs NOT NULL,
  `AUXSKU` varchar(22) COLLATE latin1_general_cs DEFAULT NULL,
  `auxskd` varchar(120) COLLATE latin1_general_cs NOT NULL,
  `AUXQTY` int(11) NOT NULL,
  `AUXEQT` int(11) NOT NULL,
  `AUXTAG` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXETG` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXSEQ` int(11) NOT NULL,
  `AUXZNE` varchar(4) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXTLC` varchar(10) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXFLC` varchar(10) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXOID` varchar(26) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXLNN` int(11) NOT NULL,
  `AUXLLN` int(11) NOT NULL,
  `AUXLST` varchar(8) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXGRP` varchar(8) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXPLC` varchar(10) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXTFP` varchar(10) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXTYP` varchar(1) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXUOM` int(11) NOT NULL,
  `AUXLOT` varchar(20) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXCLS` varchar(4) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXTSK` int(11) NOT NULL,
  `AUXITK` int(11) NOT NULL,
  `AUXSUB` int(11) NOT NULL,
  `AUXSCT` varchar(4) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXSDTR` datetime NOT NULL,
  `AUXLNK` int(11) NOT NULL,
  `AUXTSZ` varchar(4) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXPRY` varchar(1) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXWAV` varchar(2) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXCPO` varchar(22) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXSLC` varchar(10) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXDID` varchar(26) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXCAS` int(11) NOT NULL,
  `AUXRTG` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXCRT` int(11) NOT NULL,
  `AUXRDN` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXUM1` int(11) NOT NULL,
  `AUXPPS` varchar(22) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXPSQ` int(11) NOT NULL,
  `AUXTLR` varchar(1) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXMTG` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXLCD` varchar(12) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXSHDR` datetime NOT NULL,
  `AUXRVF` varchar(1) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXDNO` varchar(8) COLLATE latin1_general_cs DEFAULT NULL,
  `auxfid` varchar(3) COLLATE latin1_general_cs NOT NULL,
  UNIQUE KEY `AUXKEY` (`AUXKEY`),
  KEY `AUX_AUXLSTK` (`AUXLST`,`AUXLCD`,`AUXKEY`),
  KEY `AUX_AUXOID` (`AUXOID`),
  KEY `AUX_AUXSTSK` (`AUXSTS`,`AUXKEY`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs;

这是一个确实有效的方法:

CREATE TABLE `aux2` (
  `AUXKEY` int(11) NOT NULL AUTO_INCREMENT,
  `AUXSTM` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXSTS` varchar(4) COLLATE latin1_general_cs DEFAULT NULL,
  `auxuid` varchar(50) COLLATE latin1_general_cs NOT NULL,
  `AUXSKU` varchar(22) COLLATE latin1_general_cs DEFAULT NULL,
  `auxskd` varchar(120) COLLATE latin1_general_cs NOT NULL,
  `AUXQTY` int(11) NOT NULL,
  `AUXEQT` int(11) NOT NULL,
  `AUXTAG` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXETG` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXSEQ` int(11) NOT NULL,
  `AUXZNE` varchar(4) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXTLC` varchar(10) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXFLC` varchar(10) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXOID` varchar(26) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXLNN` int(11) NOT NULL,
  `AUXLLN` int(11) NOT NULL,
  `AUXLST` varchar(8) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXGRP` varchar(8) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXPLC` varchar(10) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXTFP` varchar(10) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXTYP` varchar(1) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXUOM` int(11) NOT NULL,
  `AUXLOT` varchar(20) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXCLS` varchar(4) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXTSK` int(11) NOT NULL,
  `AUXITK` int(11) NOT NULL,
  `AUXSUB` int(11) NOT NULL,
  `AUXSCT` varchar(4) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXSDTR` datetime NOT NULL,
  `AUXLNK` int(11) NOT NULL,
  `AUXTSZ` varchar(4) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXPRY` varchar(1) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXWAV` varchar(2) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXCPO` varchar(22) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXSLC` varchar(10) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXDID` varchar(26) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXCAS` int(11) NOT NULL,
  `AUXRTG` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXCRT` int(11) NOT NULL,
  `AUXRDN` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXUM1` int(11) NOT NULL,
  `AUXPPS` varchar(22) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXPSQ` int(11) NOT NULL,
  `AUXTLR` varchar(1) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXMTG` varchar(6) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXLCD` varchar(12) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXSHDR` datetime NOT NULL,
  `AUXRVF` varchar(1) COLLATE latin1_general_cs DEFAULT NULL,
  `AUXDNO` varchar(8) COLLATE latin1_general_cs DEFAULT NULL,
  `auxfid` varchar(3) COLLATE latin1_general_cs NOT NULL,
  UNIQUE KEY `AUXKEY` (`AUXKEY`),
  KEY `AUX_AUXLSTK` (`AUXLST`,`AUXLCD`,`AUXKEY`),
  KEY `AUX_AUXOID` (`AUXOID`),
  KEY `AUX_AUXSTSK` (`AUXSTS`,`AUXKEY`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs;

aux是预订的还是怎么的?我在保留词列表中看不到它,但这是我唯一能想到的事情.即使跑alter table aux2 rename aux;也会增加这一点,所以aux在某种程度上是有意义的.

MySQL版本: 在Amazon RDS上,我使用的是5.7.42-log 在CentOS 6.5 dev服务器上,我使用的是5.6.51-log

两台机器上的行为相同.

顺便说一句,我判断的第一个地方是MySQL保留字,我没有看到它.我只提到"保留字",因为我抓住了救命稻草.

我从命令行做一切. 差不多mysql .... < aux2.sql个. 这是我可以用来创建表格的方法. 我不能使用其他工具,因为有时我转储数据库来创建重复的副本,这就是我发现问题的原因.

推荐答案

您好,您可以阅读这篇文档说明https://dev.mysql.com/doc/refman/5.7/en/identifier-mapping.html

enter image description here

在Windows上,当服务器创建相应的文件或目录时,一些名称(如nul、prn和aux)通过在名称后附加@进行编码.这发生在所有平台上,以实现相应数据库对象在平台之间的可移植性.

Mysql相关问答推荐

SQL条件 Select 和条件WHERE

客户跨订阅的跨时间线计数

为分组记录MySQL取取值为TRUE的单行

MySQL:返回所有条件(但不满足其他条件)为真的所有结果

使用字符串文字与使用日期文字时的SQL行为

在 mySQL 中计算每日数组的每周指标

MySQL 8.0.33 Select json列时出现错误:排序内存不足,请考虑增加服务器排序缓冲区大小

SQL 查询仅当成员共享确切值时才 Select 成员对

替代对多个表执行 FULL OUTER JOIN?

go&mysql&docker 拒绝连接

分别针对每个不同的列 Select 聚合

如何使用减号运算符编写 sql 查询以返回缺少相应值的行?

在表中找到最大值,然后分别显示SQL组和每个SQL组中的最大值计数

用数字和字母对 VARCHAR 列进行排序

如何在考虑另一表的值的情况下计算一列的值

如何在任何连续范围内获得最大值

MySQL Group By 和 Sum 其他列的总值

如何查看打开了多少 MySQL 连接?

将 mySQL 查询作为 cron 作业(job)运行?

#1030 - 从存储引擎 Aria 收到错误 176读取错误校验和的页面