2012-06-25 4 views
3

Windows (Wamp)에서 mysql 5.5.2를 사용하여 여러 데이터베이스를 사용하는 Java 애플리케이션을 작성 중입니다. 데이터베이스 이름과 생성 날짜를 나열하고 싶습니다. 데이터베이스에는 동일한 테이블의 유일한 데이터가 있습니다 (아카이브). 자바로 어떤 트릭?자바로 MySQL 데이터베이스 생성 날짜 받기

은 편집 :

mysql> show databases; 
+-------------------------+ 
| Database    | 
+-------------------------+ 
| information_schema  | 
| formaction_archive_test | 
| mysql     | 
| performance_schema  | 
| sw_formaction   | 
| test     | 
+-------------------------+ 
6 rows in set (0.00 sec) 

"formaction_archive_test"와 "sw_formaction은"모두 나 "루트"에 의해 만들어지고 그들은 같은 테이블이 있습니다. 제 문제는 각각의 창작 날짜를 얻는 방법입니다.

나는이 솔루션을 발견

mysql> use information_schema; 
Database changed 
mysql> SELECT table_name, create_time 
    -> FROM tables 
    -> WHERE table_schema NOT IN('mysql', 'information_schema') ; 
+----------------------------------------------+---------------------+ 
| table_name         | create_time   | 
+----------------------------------------------+---------------------+ 
| cond_instances        | NULL    | 
| events_waits_current       | NULL    | 
| events_waits_history       | NULL    | 
| events_waits_history_long     | NULL    | 
| events_waits_summary_by_instance    | NULL    | 
| events_waits_summary_by_thread_by_event_name | NULL    | 
| events_waits_summary_global_by_event_name | NULL    | 
| file_instances        | NULL    | 
| file_summary_by_event_name     | NULL    | 
| file_summary_by_instance      | NULL    | 
| mutex_instances        | NULL    | 
| performance_timers       | NULL    | 
| rwlock_instances        | NULL    | 
| setup_consumers        | NULL    | 
| setup_instruments       | NULL    | 
| setup_timers         | NULL    | 
| threads          | NULL    | 
| annee          | 2012-06-06 16:19:04 | 
| categorie         | 2012-06-06 16:19:04 | 
| certification        | 2012-06-06 16:19:04 | 
| client          | 2012-06-06 16:19:04 | 
| clientold         | 2012-06-06 16:19:04 | 
| connaisance_ecole       | 2012-06-06 16:19:04 | 
| duree          | 2012-06-06 16:19:04 | 
| eleve          | 2012-06-06 16:19:04 | 
| famille          | 2012-06-06 16:19:04 | 
| formateur         | 2012-06-06 16:19:04 | 
| formation         | 2012-06-06 16:19:04 | 
| inscription         | 2012-06-06 16:19:04 | 
| lieux          | 2012-06-06 16:19:05 | 
| lst_formation        | 2012-06-06 16:19:05 | 
| moyen_paiement        | 2012-06-06 16:19:05 | 
| paiement          | 2012-06-06 16:19:05 | 
| session          | 2012-06-06 16:19:05 | 
| souhait          | 2012-06-06 16:19:05 | 
| souhaits          | 2012-06-06 16:19:05 | 
| type_certification       | 2012-06-06 16:19:05 | 
+----------------------------------------------+---------------------+ 
37 rows in set (0.01 sec) 

을하지만 마지막 생성 된 데이터베이스 정보 나를 보여줍니다. 해결책은 파일 생성 날짜를 보는 것일 수 있습니까?

+0

사례에 대해 구현 한 SQL 쿼리가 있습니까? –

+0

나는 내 질문을 편집 – Ayoub

답변

4

이 요청을 얻을 수 있어야 생성 시간은 가장 오래된 테이블을 확인하는 유일한 방법입니다.

SELECT MIN(create_time) 
FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'my_database' 

원하실 경우 _config과 같이 쓸모없는 테이블을 데이터베이스에 삽입 할 수 있습니다.이 테이블은 절대로 삭제되지 않습니다.

+0

이 솔루션으로 시작했지만 데이터베이스에 동일한 테이블이 있고 마지막으로 만든 테이블 정보 만 제공한다고 – Ayoub

+0

오우, 미안. 내 편집을 참조하십시오. – zessx

+0

위대한! 이게 내 진짜 문제는 "formaction_archive_test"create_time에 대한 NULL 값이지만, 원래의 데이터베이스 "sw_formaction"을 브라우저에서 "formaction_archive_test"로 복사/이름을 변경했기 때문에 문제가되었습니다. 따라서 두 번째 데이터베이스에 대한 information_schema 테이블에 정보가 저장되지 않았습니다. 실수해서 죄송합니다. – Ayoub

1

Java에서 도움을 줄 수있는 구체적인 트릭이 있는지는 잘 모르겠지만 여기서 참조한 INFORMATION_SCHEMA_TABLES 테이블을 확인하십시오 : http://dev.mysql.com/doc/refman/5.0/en/tables-table.html. 가능하면 모든 테이블의 최소 생성 시간을 가져 와서 데이터베이스 생성 시간으로 사용 하시겠습니까?

AFAIK, pure SQL을 사용하여 데이터베이스를 만들 때를 확인할 방법이 없습니다.

SELECT table_name, create_time 
FROM information_schema.tables 
WHERE table_schema NOT IN('mysql', 'information_schema') 

편집 :

데이터베이스를 얻으려면

SELECT table_name, create_time 
FROM information_schema.tables 

당신은 당신이 만든 하나를 얻을 수 information_schemamysql 스키마를 제거 할 수 있습니다

관련 문제