I have Mysql 5.5.18
and upon show engines:
show engines; +--------------------+---------+------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+------------------------------------------------------------+--------------+------+------------+ | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | …
我在服务器 S1 上有 mysql DB(mysql 版本 5.1.41-3ubuntu12.7-log)。
我在服务器 S2(mysql 版本 5.1.54-1ubuntu4-log)上为这个数据库创建了主从。
S1 上的 DB 使用一个数据文件 (ibdata)。
将数据库转储到 S2 后,我设置了innodb_file_per_table=1. 这使得每个表都有自己的 ibd 文件。现在一切顺利。
在 S2 上重新启动 mysql 后,我遇到了出现此错误的问题:
Error 'Unknown table engine 'InnoDB'' on query. Default database: MyDB
当我尝试显示引擎时,我得到以下信息:
显示引擎; +------------+---------+------------------------- ------------------------------+------------ ---+------+------------+ | 发动机 | 支持 | 评论 | 交易 | XA | 保存点 | +------------+---------+------------------------- ------------------------------+------------ ---+------+------------+ | 我的ISAM | 默认 | MySQL 3.23 的默认引擎,具有出色的性能| 否 | 否 | 否 | | MRG_MYISAM | 是 | 相同 …
我有 MySQL 5.5.20 和这个表:
mysql> desc 国家; +----------------+-------------+------+-----+----- ----+-----+ | 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 | +----------------+-------------+------+-----+----- ----+-----+ | 身份证 | 整数(255) | 否 | PRI | 空 | | | 异 varchar(2) | 否 | | 空 | | | 姓名 | varchar(80) | 否 | | 空 | | | printable_name | varchar(80) | 否 | | 空 | | | iso3 | varchar(3) | 是 | | 空 | | | …
我有drupal 网站,其中一张表是cache_form。我有一个 cron
DELETE FROM cache_form where expire < UNIX_TIMESTAMP(NOW());
Run Code Online (Sandbox Code Playgroud)
这工作正常。
cache_form.myd虽然我有这个,但大小为 4.9G:
mysql>select sum(length(data))/1024/1204 from cache_form;
11.19144630 <b>==> 11 M
mysql>check table cache_form\G
Table: drupal.cache_form
Op: check
Msg_type: status
Msg_text: OK
mysql>select cid,length(data) from cache_form order by length(data) desc limit 1;
82373 ==> 80K
select * from information_schema.tables where table_name='cache_form'\G
*************************** 1. row ***************************
TABLE_CATALOG: NULL
TABLE_SCHEMA: drupal
TABLE_NAME: cache_form
TABLE_TYPE: BASE TABLE
ENGINE: MyISAM
VERSION: 10
ROW_FORMAT: Dynamic
TABLE_ROWS: 2681
AVG_ROW_LENGTH: 4621
DATA_LENGTH: 12391088 <b>==>11M</b>
MAX_DATA_LENGTH: 281474976710655 …Run Code Online (Sandbox Code Playgroud) .我在 Mysql DB 中有太多的表 X1,X2,...Xn(它们可能超过 75 个表)来代表一个非常大公司的部门。
每个表都有这样的结构
描述 X1; +---------+-------------+------+-----+---------+-- -----+ | 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 | +---------+-------------+------+-----+---------+-- -----+ | 要求 | 整数(11) | 是 | | 空 | | | 员工姓名 | varchar(32) | 是 | 多| 空 | |
现在我应该从 John 工作的部门返回所有 ReqF。我知道我可以通过这样的左连接来做到这一点
select X1.ReqF,X2.ReqF,...,Xn.ReqF FROM X1 left join X2 on (EmpName) left join .... left join Xn on X1.EmpName=Xn.EmpName where X1.EmpName='John'
有没有更好的方法可以做到这一点,如果我们需要从表中检索不同的字段(例如 X1.ReqF1、X2.ReqF2 或 [SELECT X1.F1、X1.F2、X2.F3、 ...])??