DATA DIRECTORY [=] 'absolute path to directory' INDEX DIRECTORY [=] 'absolute path to directory' 上面两个create TABLE的先项可以指定数据文件和索引文件的目录,但仅限支持realpath() 的操作系统如UNIX或LINUX。WINDOWS自成体系,标新立异,不支持。
data 目录和安装目录直接在配置文件里指定了啊linux和windows都可以指定
我需要将现有的数据表更换为别的同名的数据表,希望最好能够不覆盖现有数据表,而是通过直接先指向别的目录,从而实现数据表的切换,如果新的数据表不合适,还可以切换回来!不过经过测试发现,真正的实现还是通过创建链接link()函数来完成的CREATE TABLE p_tbl(id int, name char(5)) DATA DIRECTORY='/einfo/data/data/' INDEX DIRECTORY='/einfo/data/index/';[root@localhost data]# ls /var/lib/mysql/test/p_tbl.* -l -rw-rw---- 1 mysql mysql 8586 09-21 09:58 /var/lib/mysql/test/p_tbl.frm lrwxrwxrwx 1 mysql mysql 26 09-21 09:58 /var/lib/mysql/test/p_tbl.MYD -> /einfo/data/data/p_tbl.MYD lrwxrwxrwx 1 mysql mysql 27 09-21 09:58 /var/lib/mysql/test/p_tbl.MYI -> /einfo/data/index/p_tbl.MYI 不过新问题出现了: 我用alter命令切换目录的时候没成功ysql> ALTER TABLE p_tbl DATA DIRECTORY='/edata/data/' INDEX DIRECTORY='/edata/index/'; Query OK, 0 rows affected, 2 warnings (4.49 sec) Records: 0 Duplicates: 0 Warnings: 0mysql> show warnings; +---------+------+----------------------------------+ | Level | Code | Message | +---------+------+----------------------------------+ | Warning | 1618 | <DATA DIRECTORY> option ignored | | Warning | 1618 | <INDEX DIRECTORY> option ignored | +---------+------+----------------------------------+ 2 rows in set (0.00 sec) 出现两个警告,查看链接指向 ls /var/lib/mysql/test/p_tbl.* -l 并没有改变,但新的路径权限没有问题,数据表也存在,这是为啥呢?
windows 下不可以。
INDEX DIRECTORY [=] 'absolute path to directory'
上面两个create TABLE的先项可以指定数据文件和索引文件的目录,但仅限支持realpath() 的操作系统如UNIX或LINUX。WINDOWS自成体系,标新立异,不支持。
-rw-rw---- 1 mysql mysql 8586 09-21 09:58 /var/lib/mysql/test/p_tbl.frm
lrwxrwxrwx 1 mysql mysql 26 09-21 09:58 /var/lib/mysql/test/p_tbl.MYD -> /einfo/data/data/p_tbl.MYD
lrwxrwxrwx 1 mysql mysql 27 09-21 09:58 /var/lib/mysql/test/p_tbl.MYI -> /einfo/data/index/p_tbl.MYI
不过新问题出现了:
我用alter命令切换目录的时候没成功ysql> ALTER TABLE p_tbl DATA DIRECTORY='/edata/data/' INDEX DIRECTORY='/edata/index/';
Query OK, 0 rows affected, 2 warnings (4.49 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> show warnings;
+---------+------+----------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------+
| Warning | 1618 | <DATA DIRECTORY> option ignored |
| Warning | 1618 | <INDEX DIRECTORY> option ignored |
+---------+------+----------------------------------+
2 rows in set (0.00 sec)
出现两个警告,查看链接指向 ls /var/lib/mysql/test/p_tbl.* -l
并没有改变,但新的路径权限没有问题,数据表也存在,这是为啥呢?
也就是说,没法alter table的表路径了?
改了之后会报错
ERROR 1 (HY000): Can't create/write to file 'XXX' (Errcode: 17)XXX是在建立数据表时所指向的数据库位置,看来有些东西还取决于*.frm这个文件!