事前確認事項 †設定箇所 †
確認方法 †レプリケーション †コマンド逆引き †Index一覧を見る †show indexes from テーブル名; 外部キーを追加 †alter table テーブル add foreign key (コラム名) references テーブル名(コラム名); 外部キーが張られている親テーブルを削除する時に以下を叩くと削除出来るようになる †SET FOREIGN_KEY_CHECKS=0; 行を削除 †delete from テーブル名 where .... Auto_incrementを変更する †ALTER TABLE テーブル名 AUTO_INCREMENT =0; 列を追加 †alter table テーブル名 add 列名 データ型 first|after 列名 Foreign Keyを解除する †mysql> show create table 対象テーブル; ~略~ CONSTRAINT `bx_flower_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `bx_user` (`id`) ~略~ こんな感じで出来るので、以下のように削除 mysql> alter table ch_cpn drop foreign key bx_flower_ibfk_1; mysqldumpに必要な権限だけをアカウントに付与する †GRANT SELECT, LOCK TABLES ON dbname.* TO dump@'%' IDENTIFIED BY 'dump'; mysqldump --opt -udump -pdump -hlocalhost -B dbname --tables table_name 使い方としては別ホストからの接続dump@hoge-serverはgrant allにして、localからはmysqldumpしかさせない、というやり方。 データをdumpする †mysqldump --opt -c -uユーザ名 -p データベース名 [テーブル名] > 出力先ファイル名 DBがUTF-8じゃない時は文字化けする可能性があるので、こうする mysqldump --opt -c -uユーザ名 -p --default-character-set=binary データベース名 [テーブル名] > 出力先ファイル名 rootのパスワードを忘れたとき †http://dev.mysql.com/doc/refman/4.1/ja/resetting-permissions.html debian-sys-maintのパスワードが何かしらの理由で上書きされた時 †GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'password from debian.cnf' WITH GRANT OPTION; 自分の権限を見る †mysql> SHOW GRANTS FOR 'root'@'localhost'; どんな権限がサポートされているか見る †mysql> SHOW PRIVILEGES\G Slow logを確認する †/usr/sbin/mysqld, Version: 5.0.51a-24+lenny5-log ((Debian)). started with: Tcp port: 3306 Unix socket: /var/run/mysqld/mysqld.sock Time Id Command Argument # Time: 110203 7:13:34 <==記録日時 # User@Host: hogeuser[hogeuser] @ web01.private [192.168.10.5] <== ユーザーIDとリクエストした端末 # Query_time: 5(実行時間) Lock_time: 0(ロック時間) Rows_sent: 4(送信行数)Rows_examined: 1516294(処理対象となった行数) use bbs; SELECT `be`.* FROM `web_bbs_entry` as `be` ORDER BY `be`.`created` DESC LIMIT 4; 日時などを見るときに †select * from blog where now() between in started_at and ended_at; こんな事も出来る。以下と同じ事 select * from blog where started_at <= now() and ended_at >= now(); Tuning †http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html エラー時には †mysql "ERROR 1018 (HY000): Can’t read dir of ‘.’ (errno: 13)" †MySQLを再起動するといいらしい ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) †そもそもMySQL起動してないかもしれない。プロセス確認する mkdir /var/run/mysqld/ touch /var/run/mysqld/mysqld.sock chown -R mysql /var/run/mysqld/ service mysql start mysqld: Can't find file: './mysql/plugin.frm' (errno: 13) †mysqldコマンドを実行したら 110928 14:13:10 [Note] Plugin 'FEDERATED' is disabled. mysqld: Can't find file: './mysql/plugin.frm' (errno: 13) 110928 14:13:10 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 110928 14:13:10 InnoDB: Operating system error number 13 in a file operation. InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory. InnoDB: File name ./ibdata1 InnoDB: File operation call: 'create'. InnoDB: Cannot continue operation. errno 13というのが出ているので、調べてみる perror 13 OS error code 13: Permission denied 権限エラーである事が分かる。 /var/lib/mysqlがmysqlユーザーで読み込み出来るかどうか調べてみる ERROR 1025 (HY000): Error on rename of './myblog/#sql-133_52' to './myblog/post' (errno: 150) †上記エラーが出たら mysql> SHOW INNODB STATUS \G で確認 LATEST FOREIGN KEY ERROR ------------------------ 111115 14:48:56 Error in foreign key constraint of table myblog/post: there is no index in the table which would contain the columns as the first columns, or the data types in the table do not match the ones in the referenced table or one of the ON ... SET NULL columns is declared NOT NULL. Constraint: , CONSTRAINT "post_id_refs_id_26260bef739cadd7" FOREIGN KEY ("blog_id") REFERENCES "blog" ("id") http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html ALTER TABLE yourtablename DROP FOREIGN KEY internally_generated_foreign_key_id 外部キーを破棄する場合は、SHOW CREATE TABLE を使って、内部で生成された外部キー ID を確認する必要があります。 mysql> SHOW CREATE TABLE ibtest11c\G *************************** 1. row *************************** [#v159b585] Table: ibtest11c Create Table: CREATE TABLE `ibtest11c` ( `A` int(11) NOT NULL auto_increment, `D` int(11) NOT NULL default '0', `B` varchar(200) NOT NULL default '', `C` varchar(175) default NULL, PRIMARY KEY (`A`,`D`,`B`), KEY `B` (`B`,`C`), KEY `C` (`C`), CONSTRAINT `0_38775` FOREIGN KEY (`A`, `D`) REFERENCES `ibtest11a` (`A`, `D`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `0_38776` FOREIGN KEY (`B`, `C`) REFERENCES `ibtest11a` (`B`, `C`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=INNODB CHARSET=latin1 1 row in set (0.01 sec) mysql> ALTER TABLE ibtest11c DROP FOREIGN KEY `0_38775`; ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails †set foreign_key_checks = 0; ERROR! Manager of pid-file quit without updating file. †(hoge)user-no-MacBook-Air:bin aya$ sudo /opt/local/share/mysql5/mysql/mysql.server start Starting MySQL ...... ERROR! Manager of pid-file quit without updating file. 上記のようなエラーが出たら/opt/local/varを確認し、(なければ&諸設定されてなければ)以下のフォルダーの作成、設定を行う (hoge)user-no-MacBook-Air:var aya$ ls -la drwxr-xr-x 6 root admin 204 11 10 12:23 . drwxr-xr-x 12 root admin 408 11 7 12:59 .. drwxr-xr-x 3 _mysql _mysql 102 11 7 15:32 db <== mysqlのpermissionつける drwxr-xr-x 3 _mysql _mysql 102 11 10 12:24 log <==新規追加する drwxr-xr-x 11 root admin 374 11 7 12:31 macports drwxr-xr-x 3 _mysql _mysql 102 11 10 12:20 run <==新規追加する logとrunの配下にはmysql5のフォルダーを作成する /opt/local/var/log/mysql5 /opt/local/var/run/mysql5 参考URL † |