メイン

database アーカイブ

2015年11月15日

PostgreSQL インストール

 centos へ PostgreSQL インストールし php から利用するところまで。

●前提環境
$ cat /etc/redhat-release
CentOS release 6.7 (Final)
$ cat /proc/version
Linux version 2.6.32-573.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) ) #1 SMP Thu Jul 23 15:44:03 UTC 2015
$ uname -a
Linux www.remix.asia 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
手順は...▼

続きを読む "PostgreSQL インストール" »

2014年07月20日

某VPSへのセットアップおさらい2

 mysqlデータベースと連携したphp WEBアプリまで。

●WEBサーバー
apache がインストールされているか確認
$ sudo yum list installed | grep httpd
なければ apache をインストール
Server version: Apache/2.2.15 (Unix)
Server built: Apr 3 2014 23:56:16
$ yum info httpd
$ sudo yum -y install httpd
自動起動になっていなければ自動起動に変更
$ chkconfig --list | grep httpd
$ sudo chkconfig httpd on
apacheを起動してウェルカムページ確認
$ sudo service httpd start
http://IPアドレス/ ●apacheグループに所属させる
$ sudo usermod -G apache admin
$ id admin
●データベースサーバー
mysql-server がインストールされているか確認
$ sudo yum list installed | grep mysql-server
mysql Ver 14.14 Distrib 5.1.73 なければ mysql をインストール
$ yum info mysql-server
$ sudo yum -y install mysql-server
mysql-server を起動
$ sudo service mysqld start
初期化(パスワード・匿名ユーザー・サンプルデータベースの扱いなど)
$ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): (初めてならエンター)
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: *****************
Re-enter new password: *****************
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
	:
Remove anonymous users⁄ [Y/n] Y
	:
Disallow root login remotely⁄ [Y/n] Y
	:
Remove test database and access to it⁄ [Y/n] Y
	:
Reload privilege tables now⁄ [Y/n] Y
	:
日本語を使用する場合
sudo mv /etc/my.cnf /etc/my.cnf.org
sudo cp /etc/my.cnf.org /etc/my.cnf
sudo vi /etc/my.cnf
[mysqld]のブロックに最低限
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
を追記してmysqlサーバ再起動
$ sudo service mysqld restart
自動起動になっていなければ自動起動に変更
$ chkconfig --list | grep mysql
$ sudo chkconfig mysqld on
mysql-server へログオン確認
$ mysql --show-warnings -u root -p
●php php エンジンがインストールされているか確認
$ sudo yum list installed | grep php
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies なければ php をインストール
$ sudo yum info php
$ sudo yum -y install php
php でマルチバイトストリング(日本語)を使えるか確認
$ sudo yum list installed | grep php-mbstring
なければ php-mbstring をインストール
$ yum info php-mbstring
$ sudo yum -y install php-mbstring
php から mysql を使用できるか確認
$ sudo yum list installed | grep php-mysql
なければ php-mysql をインストール
$ yum info php-mysql
$ sudo yum -y install php-mysql
確認用の phpファイルを作成
$ vi /var/www/html/info.php
$ cat /var/www/html/info.php
<?php
phpinfo();
?>
apacheを再起動
$ sudo service httpd restart
ここまで apache の設定ファイル httpd.conf はデフォルトのまま。
手元のブラウザで php の情報ページを確認。
http://IPアドレス/info.php
システム情報が表示されるので確認後 削除。
●phpライブラリpear
pear がインストールされているか確認
$ sudo yum list installed | grep php-pear
なければ pear をインストール
$ yum info php-pear
$ sudo yum -y install php-pear
pear バージョン確認
$ pear version
$ pear list
PEAR Version: 1.9.5 下記のエラー
$ sudo pear install -a ethna/ethna

Notice: Array to string conversion in PEAR/REST/13.php on line 80
PHP Notice:  Array to string conversion in /usr/share/pear/PEAR/REST/13.php on line 80

Warning: Invalid argument supplied for foreach() in PEAR/REST/13.php on line 84
PHP Warning:  Invalid argument supplied for foreach() in /usr/share/pear/PEAR/REST/13.php on line 84
PHP Fatal error:  Cannot use string offset as an array in /usr/share/pear/PEAR/REST/10.php on line 263
を解決するため
$ sudo pear clear-cache
pear アップグレード
$ sudo pear list-upgrades
$ sudo pear upgrade pear
●phpフレームワーク ethna ethna をインストール
$ sudo pear channel-discover pear.ethna.jp
$ sudo pear install -a ethna/ethna
ethna コマンド確認
$ ethna -v
Ethna 2.5.0 (using PHP 5.3.3)

●GDライブラリ
phpで画像の拡大・縮小をするためインストール
$ sudo yum list installed | grep php-gd
$ yum info php-gd
$ sudo yum -y install php-gd

2013年06月08日

Ethna で SQLite の試み

今さらながら Ethna-2.5.0 で データベース MySQL から SQLite に切り替えてみる。
SQLite と言っても互換性が無くなってしまった SQLite2 。ここまでの環境
CentOS release 6.4 (Final)
PHP Version 5.3.3
 DB 1.7.14 stable
 PEAR 1.9.4 stable
sqlite 2.8.17
sqlite3 3.6.20
で、Ethna-2.5.0 + MySQL5 前提Webアプリのデータベースを SQLite2 に切り替え。
極力 SQLベタ書きをさける為の Ethna_AppObject は、そのままではNG。
原因は PEAR:DB::fetchRow(DB_FETCHMODE_ASSOC) の結果セット各列のキーが
mysql だと
	field
SQLite2 だと
	tables"."field
で異なる為。 ※ DBを切り替えたらキャッシュを削除しないと混乱する。
最小限の修正手順... ▼

続きを読む "Ethna で SQLite の試み" »

2013年06月07日

PHP5.3.3 から sqlite2 をアクセス

PHP から、PEAR::DB を介して sqlite2 データベースを使用する。
CentOS release 6.4 (Final), CentOS release 5.9 (Final)
PHP Version 5.3.3
 DB 1.7.14 stable
 PEAR 1.9.4 stable
構築手順... ▼

続きを読む "PHP5.3.3 から sqlite2 をアクセス" »

2013年06月06日

sqliteコマンド

 アンドロイドも SQLite を使うので、いまさらながら PHP から SQLite を触ってみる。
 CentOS release 6.4 (Final)
 PHP Version 5.3.3
----------------------------------
 CentOS release 5.8 (Final)
 PHP Version 5.3.3
この環境では、sqlite3 コマンドでメンテナンスし、PHP からは PDO でアクセス。

次は Ethna の データベースとして触っておくことに。
ところが、巷の情報は古く sqlite2 時代の解説がほとんど。
sqlite2 と sqlite3 には互換性が無い。
さらに PEAR::DB は、PHP5.3.3 標準の sqlite3 に対応していない。
そこで、この環境に sqliteコマンド をインストールして、sqlite3 と共存させる手順... ▼

続きを読む "sqliteコマンド" »

2011年08月25日

vps でデータベース mysql 導入

実践ハイパフォーマンスMySQL ●mysql-server がインストールされているか確認
[root@www ~]# yum list installed | grep mysql-server
mysql-server.x86_64                       5.0.95-1.el5_7.1             installed
●なければ mysql をインストール
[root@www ~]# yum info mysql-server
[root@www ~]# yum -y install mysql-server
●mysql-server を起動
[root@www ~]# service mysqld start
●root のパスワード設定
[root@www ~]# mysqladmin --user=root password ********
●mysql-server へログオン確認
[root@www ~]# mysql --show-warnings -u root -p
●デフォルトのデータベース確認
mysql> show databases;
mysql> quit;
●自動起動の確認
[root@www ~]# chkconfig --list | grep mysql
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
●自動起動になっていなければ自動起動に変更
[root@www ~]# chkconfig mysqld on
日本語(UTF8)を使用する場合...↓

続きを読む "vps でデータベース mysql 導入" »

2009年10月22日

MyISAM でトランザクションを実行

InnoDB ではなく MyISAM ストレージエンジンのテーブルに対して

BEGIN;
UPDATE~
INSERT~
UPDATE~
COMMIT;

としてもエラーは出ない。途中で、
ROLLBACK;
してもエラーは出ない。
コンソールでは
Query OK, 0 rows affected (0.00 sec)

2009年10月20日

InnoDB を無効にする

MySQL Server の起動に --skip-innodb オプションを指定。
/etc/init.d/mysql restart --skip-innodb
以降、InnoDB テーブルを作成すると
mysql> CREATE TABLE test( cd INT, pactive INT) ENGINE=InnoDB;
Query OK, 0 rows affected, 1 warning (0.01 sec)

Warning (Code 1266): Using storage engine MyISAM for table 'test'
という具合に、強制的に MyISAM テーブルとして作成される。
ちなみに、無効にする前に存在していた InnoDB テーブルは使用できなくなる。
MySQL Server 5.0.27-standard
Vine Linux 4.2 (Lynch Bages)

2009年10月19日

mysqlのワーニング表示

コンソール使用途中でワーニングを表示する
mysql> \W
how warnings enabled.
他に warnings; も
コンソール使用途中でワーニングを非表示する
mysql> \w
Show warnings disabled.
接続開始時にデフォルトでワーニングを表示するオプションは
mysql --show-warnings -u USER -p DATABASE
mysql Ver 14.12 Distrib 5.0.27, for pc-linux-gnu (i686) using readline 5.0
mysql Ver 14.14 Distrib 5.1.30, for Win32 (ia32)
×
mysql Ver 14.7 Distrib 4.1.20, for redhat-linux-gnu (i686) using readline 4.3

2009年10月17日

INNODBタイプテーブルを扱えるレンタルサーバー

ロリポップ!レンタルサーバー
●サブドメイン
●アクセス解析
●CGI
●SSI
●PHP
●MySQL
●.htaccess
●商用利用運営可能
●ショッピングカート
●SNS

続きを読む "INNODBタイプテーブルを扱えるレンタルサーバー" »

2009年10月14日

INNODBタイプテーブルを扱えるレンタルサーバー

トーマスオブアメリカ 1strentalserverトーマスオブアメリカ 1strentalserver
●SSH
●CRON
●jsp
●servlet

2009年03月15日

テーブル定義書の自動生成 その4

完成例


























































項番 列名 属性名 データ型 制約 カラム説明
0 cd cd int(10) PRIMARY KEY AUTO_INCREMENT NOT NULL  
1 ID id varchar(128) NOT NULL
UNIQUE INDEX
2 パスワード pass varchar(128) NOT NULL
MD5
3 クラス class int(1) DEFAULT 0
1:A
2:B
2択
コードで格納 etc...
4 更新日時 xcreate datetime    
5 作成日時 xupdate datetime    

2009年03月11日

Migration 先のMySQLテーブル情報

STATUS;
DESC tableName;
DESC tableName fieldName;
テーブル クリエイト 命令もある
SHOW CREATE TABLE tableName;

MySQL Server version: 5.0.27-standard

2009年03月09日

Cayenne(カイエン)

Modelerと呼ばれる設定ツールでマッピングすると各テーブルを操作するための基底クラスのコードやXML設定ファイルを自動生成する。
http://www.atmarkit.co.jp/fjava/products/cayenne/cayenne_1.html

activeobjects よりは軽快に動作する。基底クラスのコードやXML設定ファイルのカスタマイズも比較的容易。
行を操作する場合は絞込みを工夫しないと大量のメモリを消費する(out of memoryで停止)。

いろいろ勉強になったところで、自分でコーディングしたほうが確実で早いと判断に。

2009年03月08日

activeobjects(アクティブオブジェクト)

現時点で最も簡単で比較的後発のO/Rマッピングツール。
https://activeobjects.dev.java.net/
javaの「アノテーション」を理解できれば、XML設定ファイルやGUI開発ツールEclipseにも依存しない。

確かに簡単。getter,setterメソッドを定義したinterfaceを作成してclasspathにactiveobjects-0.8.2.jarをとおすだけ。
主キーがないテーブルのマッピングは厄介?複合キーのテーブルを扱えない。
大きなデータ列を含むテーブルは工夫しないと大量のハッシュマップメモリを消費する(out of memoryで停止)。
動作遅い。

続きを読む "activeobjects(アクティブオブジェクト)" »

2009年03月07日

O/Rマッピングツール

全ての型やデータによる振る舞いをコーディングするのは、規則性が高くできればツールなどで自動的に正確なコードを生成させたい。

●Java標準のO/Rマッピング機能「Java Persistence API」
http://itpro.nikkeibp.co.jp/article/COLUMN/20060627/241918/?ST=develop&P=1
●Javaオブジェクトをデータベースへマッピング - Mr. Persister 3.0.1
http://journal.mycom.co.jp/news/2005/09/08/013.html
●Castorでデータバインディングに挑戦
http://www.atmarkit.co.jp/fxml/rensai2/xmltool03/01.html
●Hibernateで理解するO/Rマッピング★重量級
http://www.atmarkit.co.jp/fjava/rensai3/ormap01/ormap01.html
●DbUtils、Persist、Butterfly Persistence
http://d.hatena.ne.jp/Kishi/20081212/1229076102
●Cayenne★★★★
http://www.atmarkit.co.jp/fjava/products/cayenne/cayenne_1.html
●O/RマッピングをサポートするEclipseプラグイン「CROSSFIRE O/R」
http://codezine.jp/a/article/aid/339.aspx
●activeobjects★★
https://activeobjects.dev.java.net/

2009年03月06日

OracleからMySQLへの移行

 マイグレーションには、MySQL Migration Toolkit でいけることを確認済み。ただし、全く同じテーブル構造で、全自動でなくINSERTのSQL文を生成させテキストエディタで手修正することが前提。
 Lua と呼ばれるスクリプトでマイグレーションを制御できるが、どこまで可能か・記述方法の調査は断念。
 業務で稼動している既存システムを切り替える為 停止できる期間は制限付き、人の手作業によるミスのリスクがある。さらにスキーマの設計を見直すための移行フェーズを予定しているため

oracle(スキーマA)
  ↓MySQL Migration Toolkit
MySQL(スキーマA)
  ↓?
MySQL(スキーマX)

は保険としておき、一気に新しいスキーマへ変換する際の java バッチアプリを検討。

oracle(スキーマA)
  ↓java バッチアプリ
MySQL(スキーマX)

2009年03月05日

MySQL Migration Toolkit その4

 なぜか、Windows XP Professional で、MySQL Migration Toolkit の 最初のステップ java loader をパスしない。なお、XPの場合「Windows ファイアウォール」のブロック解除を促される。
 Windows 2003 server では動作確認できている。
java の version は 1.6.0_11。
 根本的な解決ではないものの MySQLMigrationTool.exe にはオプションがあり
cd "C:\Program Files\MySQL\MySQL Tools for 5.0"
MySQLMigrationTool.exe -debug
で最初のステップを進められる。

続きを読む "MySQL Migration Toolkit その4" »

2009年03月04日

実際に発行されたSQL

Oracle のJDBCの場合、デバッグ用のドライバを使えばトレースが取れる。
%ORACLE_HOME%\jdbc\lib\ojdbc14_g.jar を %CLASSPATH% に通して、実行時に
java -Doracle.jdbc.LogFile=true -Doracle.jdbc.LogFile=./oracle.log application
で、とすればカレントのoracle.logにトレースされる↓

続きを読む "実際に発行されたSQL" »

2008年12月20日

MySQL Migration Toolkit その3

Oracle から MySQL へのデータ移行中のエラーその3
最後に残ったエラーメッセージ
Unknown column '0x' in 'field list'

insertスクリプト(Inserts.sql)を生成させて
mysql -u taro -p dbname < Inserts.sql
とすると
ERROR 1054 (42S22) at line 74: Unknown column '0x' in 'field list'
SQL 文を眺めると、『0x』という数字でもなく文字列でもないデータをBLOB列へ insert、バグ?。
移行元の BLOB 列の値がNULLのときの SQL 文が変。
エディタでinsertスクリプト(Inserts.sql)の『0x,』を『NULL,』に置換することで解決。

2008年12月19日

MySQL Migration Toolkit その2

 Oracle から MySQL へのデータ移行中のエラーその2
Incorrect string value: '\xE9\xA6\x99\xE6\xB8\xAF...' for column 'subject' at row 1
 デフォルトのままだと、Migration Plan「Object Mapping」で Migration of type Oracle Schema「Parameter」が「Latin1」となっているのを「Multilanguage」に変更。
 これで移行先のCREATE DATABASE文が
CHARACTER SET utf8 COLLATE utf8_general_ci;
となり、上記エラーは全て解消。

 ちなみにWindows Server 2003 で
移行元は Oracle9i、インスタンス構築時のキャラクタベースは EUC
移行先は MySQL Server 5.1.30、インスタンス構築時のキャラクタベースは UTF8

2008年12月18日

オラクルのjdbc経由で実際に実行されたSQL文を確認

●javaソース変更
 Class.forName( "oracle.jdbc.driver.OracleDriver" );
  ↓
 Class.forName( "com.p6spy.engine.spy.P6SpyDriver" );

●実行パスに spy.properties を配置。
realdriver=oracle.jdbc.driver.OracleDriver ←コメント外し
#realdriver=org.gjt.mm.mysql.Driver ←デフォルトをコメントアウト

●CLASSPATH に追加。
CP=$CP:./p6spy.jar
export CLASSPATH=.:${CP}

●p6spy.jar を指定した通りに配置して普通に実行。

http://www.p6spy.com/
ちょっと期待外れ

2008年12月10日

MySQL Migration Toolkit その1

 Oracle から MySQL へのデータ移行中、レポート内に大量の
Packet for query is too large (8056629 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.

 移行元は Oracle のblob フィールドに最大10MBをバイナリを保持する仕様なので
C:\Program Files\MySQL\MySQL Server 5.1\my.ini
の末尾に
max_allowed_packet=10M
を追加。

2008年12月09日

MySQL GUI Tools

Windows 上の Oracle9i データ を マック OS X の MySQL への移行調査。
『MySQLマイグレーションツールキット』が含まれる『MySQL GUI Tools』が存在する。
http://dev.mysql.com/downloads/gui-tools/5.0.html
MySQL GUI Tools =
+ MySQL Administrator 1.2
+ MySQL Query Browser 1.2
+ MySQL Migration Toolkit 1.1
都合のよいことに MAC OSX 10.4 (Universal binaries) 5.0-r12 12.4M がある。
ところが、12/3 現在のアーカイブ(mysql-gui-tools-5.0-r12-osx10.4-universal.dmg)には、MySQL Migration Toolkit が含まれていない。
Windows 上の MySQL へローカル移行すればよいだろうということで、Windows (x86) 5.0-r14 17.7M (mysql-gui-tools-5.0-r14-win32.msi) を採用。
Oracle9i(9.2.0.3) 導入時に入る java 1.3.1_01 でも起動している。

2008年12月06日

オラクルのパッチ導入

昔実施した、すっぴんのオラクル9iへパッチ(Oracle 9iPatch Set 9.2.0.3.0)を導入したときのの手順記録。
Windows server 2000, 2003 ともにOK。

続きを読む "オラクルのパッチ導入" »

2008年12月05日

OFFSET記述できない古いmysql

今まで問題なく動作していた ethna の Ethna_AppObject::searchProp()、Ethna_AppManager::getObjectPropList() で別の環境で突然SQLのシンタックスエラーが。

nativecode=1064 ** You have an error in your SQL syntax near 'OFFSET 0' at line 1

未だに古い mysql server 3.23.58 を使っているサーバー。OFFSET句を記述できない?
互換性の切り替えはあるのか・・・。時間がないので、Ethna_AppObject から継承されている APPID_TABLEID.php 内のメソッドを↓こんな感じでオーバーライド。

続きを読む "OFFSET記述できない古いmysql" »

2005年01月22日

本格データベースがイチキュッパ?!

DB2
SQLのマスターにいいですね。
データベースといえばオラクルが元気いいかもしれないけどDB2も現場は多い。

なんでも イチキュッパシリーズ価格破壊らしい。

About database

ブログ「Remix.asia」のカテゴリ「database」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはAndroidです。

次のカテゴリはethnaです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。