| Profileyoukey spacesBlogLists | Help |
|
|
November 08 MySQLの誤検索MySQLは日本語の検索で誤検索するんですね。
聞いたところによると有名な話だとか。
「一」を検索すると「三」がヒットするし、
「高知」を検索すると「香川」がヒットするし。
他にもありそうですね。
これは仕方がないのでしょうか。
MySQLの仕様ということで済ませてしまおうかな。。 September 17 フィールドを追加する(MySQLとPostgreSQL)すでに運用中のWebアプリですが、ユーザ要望を反映して、フィールドを追加
することになりました。ここで、MySQL と PostgreSQL の違いを知ることに・・・。
MySQLは好きな位置にフィールドを挿入できるのですが、
PostgreSQLは最後尾に追加することしかできないようです。
【コマンド】
MySQL :alter table テーブル名 add 列名 データ型 first|after 列名
PostgreSQL:alter table テーブル名 add 列名 データ型 PostgreSQLの方にあわせておけば、MySQLでも使えます。
ですので、不本意ながら(?)フィールドは最後尾に追加することにしました。 September 15 フィールド名の大文字/小文字今PHPで作ってるWebアプリは、DBはMySQLとPostgreSQLのどちらでも
よいようにPHPLIBを使って作っています。
ところが、MySQLだとデータを表示するのにPostgreSQLだと表示しないと
いう問題が発生しました。
【現象】
データベースからデータを取得するコードで、MySQLだとデータが取得
できるが、PostgreSQLだと取得できない。(日本語になってる?)
【原因】
フィールド名に大文字と小文字が混在するものがありました。
・MySQLはCREATE TABLE で定義したフィールド名になる
・PostgreSQLは常に小文字になる
SQLでアクセスする場合は大文字と小文字の違いは無視されるので問題
ないのですが、PHPでデータベースからデータをフェッチするときはどうやら
大文字と小文字を区別するようです。(確信はありませんが)
【対策】
プログラム中でMySQLとPostgreSQLのどちらを使っているかを判断して
フィールド名を切り替えるようにしました。
例:こんな感じかな↓
if (MySQLの場合) {
$field_name = "FieldA";
}
else if (PostgreSQLの場合) {
$field_name = "fielda";
}
else {
$field_name = "FieldA"; }
フィールド名は大文字と小文字が混在しないようにしましょう。なーんて。
まだまだわからないことが多いです。。
以上、覚書でした。 September 08 text型の数値の並べ替え覚書です。
text型のフィールドに数値を入力して昇順で並べ替えると
1 → 11 → 2 → 20 → 3
となっちゃうんですよね。 そんなとき、CASTを使うと数値順に並べ替えられます。 サンプル: ORDER BY CAST(id AS UNSIGNED);
ただ、MySQLとPostgreSQLでは指定できる型が異なるようです。
<<MySQL>> BINARY CHAR DATE DATETIME SIGNED {INTEGER} TIME UNSIGNED {INTEGER} <<PostgreSQL>> int4 など 【注意】 PostgreSQLでは、""をintegerにキャストするとエラーになります。 (キャストするフィールドに値がはいっていなければエラーになります)
メッセージ:Invalid syntax input integer: ""
【参考】
ここ↓を参考にさせていただきました。
September 06 次の記事について :MySQL と Postgres の文の違い以前覚書で書いたものですが、今日、別のことを調べてて 『PostgreSQL との互換性を確保するため、MySQL では LIMIT row_count OFFSET というのを知りました。ちょっとショック。。 ここ↓を拝見しました。 http://www.hostgeekz.com/docs/mysql/japanese/manual.ja_Reference.html
元の記事からの引用 MySQL と Postgres の文の違い August 27 破損したテーブルの修復(active_sessionsのとき)覚書の続きです。
active_sessionsテーブルは、repair table では修復できないと
連絡がありました。こうなったら最後の手段・・・?
【現象】
Webブラウザでシステムにアクセスするとエラーメッセージが出る。
・MySQL Error: 1034 (Incorrect key file for table: 'active_sessions'. Try to repair it) Session halted.
・MySQL Error: 1016 (Can't open file: 'active_sessions.MYD'. (errno: 145))
Session halted. 【原因】
これ↓です。
【修復方法】
■ 手順とコマンド
(1)データの保存先 data\mydb にある3つのファイルの名前を変更します。 active_sessions.frm active_sessions.MYD active_sessions.MYI (2)MySQLを起動して、データベースを指定します。 C:\>mysql -u root -p Enter password: **** (3)active_sessionsテーブルを作成し直します。 mysql> CREATE TABLE active_sessions ( -> sid varchar(32) DEFAULT '' NOT NULL, ---(省略)--- );
【ひと言】 テーブルを一部だけ置き換えるのはどうかな?と思ったのですが、
セッション管理用のテーブルだから問題ないと思って。
まあ、問題なく動いてるとのことだからよしとしてください。
破損したテーブルの修復(active_sessions以外)久々に覚書です。
ユーザさんのところで、ここのところネットーワークの調子が悪い
らしくサーバーが2度ほどダウンしたとか。
その後システムにアクセスするとエラーメッセージが出て使えない
との連絡がありました。
【現象】
Webブラウザでシステムにアクセスするとエラーメッセージが出る。
・MySQL Error: 1030 (Got error 127 from table handler) Session halted.
【原因】
これ↓です。
【修復方法】
■ 手順とコマンド
(1)MySQLにログインします。 C:\>mysql -u root -p Enter password: **** (2)テーブルが破損していないかチェックします。 mysql> check table t_table extended; (3)(2)で「Msg_type」にerrorがある場合、テーブルを修復します。 mysql> repair table t_table; ■操作例 C:\>mysql -u root -p Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 to server version: 4.0.22-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use mydb Database changed
mysql> check table t_table extended; +---------------+-------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------------+-------+----------+----------+ | mydb.t_table | check | error | xxx | +---------------+-------+----------+----------+ 1 row in set (0.02 sec) mysql> repair table t_table; +---------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------------+--------+----------+----------+ | mydb.t_table | repair | status | OK | +---------------+--------+----------+----------+ 1 row in set (0.01 sec) mysql> 【ひと言】
April 05 MySQL と Postgres の文の違い今、『PHP+MySQL』で動作するシステムの「MySQL」を「Postgres」に変えるという作業をしています (というか、両方に対応できるように改訂しています)。 その作業中に気付いたことをメモしていきます。 1.LIMIT 2.GROUP BY 3.GRANT なるべく拡張機能を使わないようにしたいものです。 February 01 MySQLを狙う“ボット”出現●MySQLを狙う“ボット”出現、管理者パスワードを破って感染する (日経BP社 2005年1月29日) このワームは、「MySQLの管理者(root)アカウントに弱いパスワードを設定している場合に感染する」そうです。 最近、自分の携帯電話がウイルス感染する夢を2回も見てしまって、ウイルスやワームに安眠妨害されています。日本ではまだ携帯がウイルスに感染したという事例はないそうですが、海外ではノキアの携帯で感染事例があるとか。汎用OSが使われるようになると脅威も増しますね。そのうちネット家電もウイルス対策が必要になるのでしょうか...。 November 22 MySQLのライセンスまたまた覚書です。MySQLのライセンスを注文してみました。 ●ライセンスの種類 2.オープンソースライセンス ●注文 ●参考
October 05 データのバックアップ(MySQL)またまた覚書です。 ●データのバックアップ ●データのリストア August 28 ビープ音を消すコンソールでMySQLを使っていると、コマンドを間違えるたびに"ビーッ"と音がでます。1コマンドだけならよいのですが、テキストファイルにコマンドを記述してこれを読み込んだ時にコマンドを間違えていると"ビーッビーッビーッビーッビーッビーッ"と鳴りっぱなし。これでは周りに迷惑なのでビープ音を消しましょう。 ビープ音を消す方法 これでビープ音は消えたはず。 August 25 MySQLのコマンドおぼえがきです。 ●フィールドの追加 ●フィールドの削除 ●テーブルをエクスポート ●rootユーザのパスワードの変更 ●テーブルの削除 ●テーブル名の変更 ●フィールド名の変更 August 24 MySQLのデータ保存場所を変更するおぼえがきです。 MySQLのデータ保存場所は、デフォルトではインストールしたフォルダ下のdataフォルダです。 ■変更手順■ 例:新規データ保存場所が c:\newdir\ の場合 2.c:\windows フォルダ下の my.ini ファイルを編集します。my.ini の datadir に新規データ保存場所 例:datadir=C:/newdir/data 3.MySQLを再起動します。 以上で変更終了です。
|
|
|