SELECT
IFNULL(T2.TABLE_COMMENT, T1.TABLE_NAME) AS TABLE_COMMENT
, T1.TABLE_NAME, T1.ORDINAL_POSITION, T1.COLUMN_COMMENT
, T1.COLUMN_NAME, UPPER(T1.DATA_TYPE) AS DATA_TYPE
, (CASE T1.DATA_TYPE WHEN 'varchar' THEN T1.CHARACTER_MAXIMUM_LENGTH ELSE '' END) AS DATA_LENGTH
, (CASE T1.IS_NULLABLE WHEN 'NO' THEN 'Y' ELSE '' END) AS NOT_NULL
, (CASE T1.COLUMN_KEY WHEN 'PRI' THEN 'Y' ELSE '' END) AS IS_PK
, T1.COLUMN_DEFAULT
FROM (
SELECT
*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbzimyung'
AND TABLE_NAME LIKE 'm_%'
ORDER BY TABLE_NAME ASC, ORDINAL_POSITION ASC
) T1
INNER JOIN (
SELECT
TABLE_NAME, TABLE_COMMENT
FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE TABLE_NAME LIKE 'm_%'
) T2 ON T2.TABLE_NAME = T1.TABLE_NAME
2020년 3월 12일 목요일
MySQL schema query with comment
Table
SELECT * FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE TABLE_NAME LIKE 'm_%'
Column
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbname'
AND TABLE_NAME LIKE 'T_%'
ORDER BY TABLE_NAME ASC, ORDINAL_POSITION ASC
SELECT * FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE TABLE_NAME LIKE 'm_%'
Column
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbname'
AND TABLE_NAME LIKE 'T_%'
ORDER BY TABLE_NAME ASC, ORDINAL_POSITION ASC
MySQL "The server time zone value ‘KST’ is unrecognized or represents more than one time zone" error
MySQL JDBC로 접속시 아래와 같은 에러가 발생할 경우 처리
The server time zone value ‘KST’ is unrecognized or represents more than one time zone
원인
mysql-connector-java 버전 6.x 이후 버전부터는 KST 타임존을 인식하지 못하는 것으로 판단됨
해결방안1
mysql-connector-java 5.x 버전 이용 (ex. mysql-connector-java-5.1.47)
The server time zone value ‘KST’ is unrecognized or represents more than one time zone
원인
mysql-connector-java 버전 6.x 이후 버전부터는 KST 타임존을 인식하지 못하는 것으로 판단됨
해결방안1
mysql-connector-java 5.x 버전 이용 (ex. mysql-connector-java-5.1.47)
2011년 8월 4일 목요일
[MySQL] DB생성+사용자추가
* 데이터베이스 생성
mysql> create database <database name>;
mysql> show databases;
mysql> create database <database name>;
mysql> show databases;
* 사용자 추가
mysql> use mysql
mysql> INSERT INTO user
VALUES('%','monty',PASSWORD('some_pass'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
'','','','',0,0,0,0);
mysql> use mysql
mysql> INSERT INTO user
VALUES('%','monty',PASSWORD('some_pass'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
'','','','',0,0,0,0);
* 사용자 권한 변경
mysql> use mysql
mysql> INSERT INTO db
(Host,Db,User,Select_priv,Insert_priv,
Update_priv,Delete_priv,Create_priv,Drop_priv)
VALUES('%','<db_name>','<user_id>',
'Y','Y','Y','Y','Y','Y');
- 권한정보 반영
mysql> FLUSH PRIVILEGES;
2011년 8월 3일 수요일
우분투에 MySQL 설치
* mysql 설치
$ apt-get install mysql-server
* 비밀번호 설정
$ mysqladmin -u root -p password new-password
* mysql root 비밀번호 재설정
service mysql stop
sudo mysqld --skip-grant-tables &
mysql -u root -p
UPDATE user SET Password=PASSWORD('hello') WHERE User='root'; FLUSH PRIVILEGES; exit;
kill -9 <MYSQL PID>
service mysql start
2011년 8월 2일 화요일
MySQL 스키마 조회 쿼리
* 테이블 정보 조회
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = SCHEMA()
SCHEMA()은 현재 테이블스페이스(?)를 의미 하는 듯...
문자열로 검색도 가능, 대소문자는 구분 안하는듯..
* 컬럼 정보 조회
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = SCHEMA() AND TABLE_NAME = '<TABLE_NAME>'
ORDER BY ORDINAL_POSITION
테이블명 대소문자는 구분 안하는 듯..
* 컬럼 코멘트 추가하는 쿼리
ALTER TABLE <TABLE_NAME> CHANGE COLUMN <COLUMN_NAME> <COLUMN_NAME> VARCHAR(10) COMMENT '<NEW COMMENT>';
* 테이블 생성시 코멘트 추가
CREATE TABLE TB_USER (
USER_ID VARCHAR(32) NOT NULL COMMENT '사용자 아이디',
PRIMARY KEY (USER_ID)
)
COMMENT = '사용자 정보'
;
[Gentoo Linux] mysql 설치
# emerge mysql
# emerge --config mysql
# vi /etc/mysql/my.cnf
utf8 을 원하는 캐릭터셋으로 변경 (euckr or 그대로 등등..)
innodb_data_file_path = ibdata1:10M:autoextend:max:128M 에서 :max:128M을 삭제
# mysql_install_db
# /etc/init.d/mysql start
# emerge --config mysql
# vi /etc/mysql/my.cnf
utf8 을 원하는 캐릭터셋으로 변경 (euckr or 그대로 등등..)
innodb_data_file_path = ibdata1:10M:autoextend:max:128M 에서 :max:128M을 삭제
# mysql_install_db
# /etc/init.d/mysql start
콘솔에서 mysql 데이터베이스를 생성하고 계정 추가
mysql root로 접속하고 아래 명령어를 실행..
create database board;
CREATE USER 'board'@'localhost' IDENTIFIED BY 'board';
GRANT ALL PRIVILEGES ON *.* TO 'board'@'localhost' WITH GRANT OPTION;
SHOW GRANTS FOR 'board'@'localhost';
CREATE USER 'board'@'localhost' IDENTIFIED BY 'board';
GRANT ALL PRIVILEGES ON *.* TO 'board'@'localhost' WITH GRANT OPTION;
SHOW GRANTS FOR 'board'@'localhost';
Tomcat JNDI Datasource 설정(MySQL)
출처: http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
1. server.xml 파일에 resource 추가
1. server.xml 파일에 resource 추가
(1) context 아래에 resource 추가하기
(2) GlobalNamingResources 에 추가
2. web.xml 파일 수정

3. test.jsp
<Context path="/DBTest" docBase="DBTest" debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javatest"/></Context>
(2) GlobalNamingResources 에 추가
<GlobalNamingResources>
<Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase" />
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" username="javauser" password="javadude"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javatest" />
</GlobalNamingResources>
...
<Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase" />
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" username="javauser" password="javadude"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javatest" />
</GlobalNamingResources>
...
<Context path="/DBTest" docBase="DBTest" debug="5" reloadable="true" crossContext="true"> <ResourceLink global="jdbc/TestDB" name="jdbc/TestDB" type="javax.sql.DataSource"/> </Context>
2. web.xml 파일 수정
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <description>MySQL Test App</description> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/TestDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app>
3. test.jsp
<%@ page import="java.sql.*"%>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.activation.*" %>
<%
InitialContext cxt = new InitialContext();
javax.sql.DataSource ds = null;
Connection conn = null;
if ( cxt == null ) {
throw new Exception("Uh oh -- no context!");
}
ds = (javax.sql.DataSource) cxt.lookup( "java:/comp/env/jdbc/TestDB" );
if ( ds == null ) {
throw new Exception("Data source not found!");
}
conn = ds.getConnection();
out.println(conn.getMetaData().getDriverVersion());
%>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.activation.*" %>
<%
InitialContext cxt = new InitialContext();
javax.sql.DataSource ds = null;
Connection conn = null;
if ( cxt == null ) {
throw new Exception("Uh oh -- no context!");
}
ds = (javax.sql.DataSource) cxt.lookup( "java:/comp/env/jdbc/TestDB" );
if ( ds == null ) {
throw new Exception("Data source not found!");
}
conn = ds.getConnection();
out.println(conn.getMetaData().getDriverVersion());
%>
라벨:
datasource,
java,
jndi,
MySQL,
tomcat
피드 구독하기:
글 (Atom)