データベースの備忘録
旧メモを移植の予定。
MySQL
ERROR 1577 (HY000) at line 1: Cannot proceed because system tables used by Event Scheduler were found damaged at server start
$ mysql_upgrade -uroot -p Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock' Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock'
Running 'mysql_fix_privilege_tables'... OK Could not create the upgrade info file '/var/lib/mysql/mysql_upgrade_info' in the MySQL Servers datadir, errno: 13
ほかのmysqlサーバからデータを移行した場合 userテーブルが書き換えてしまい以下のような事態が生じたら
[sudo] password for ishida: * Stopping MySQL database server mysqld ...fail! * Starting MySQL database server mysqld ...done.
debian-sys-maitはデフォルトのメンテナンスユーザで Debianシステム上のメンテナンススクリプトで使われてます。
sudo grep password /etc/mysql/debian.cnf password = ************
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'pswd' WITH GRANT OPTION; FLUSH PRIVILEGES;
ここなど参考
$ mysqldump --user=mysql --password --socket -x ?F --all-databases > /var/tmp/sampledb.dmp
$ mysql < /var/tmp/sampledb.dmp
# mysqldump -u** -p** -C -Q -e -a dbname > back.sql # mysql -u** -p** --default-character-set=utf8 dbname < /home/user/back.sql
# mysqldump -u root -p --database mydb --tables mytbl > mydb_mytbl.sql
mydb_mytable.sqlというファイルができている. エディタで中が見れる。復元は
# mysql -u root -p --database mydb < mydb_mytbl.sql
INSERT INTO TABLES () VALUES(); の直後に
mysql> SELECT LAST_INSERT_ID();
PHPなら
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error()); $res= mysql_query("SELECT LAST_INSERT_ID()", $dbc) or die("ID取得失敗 :".mysql_error()); $dat=mysql_fetch_row($res); print_r($dat); $insert_id=$dat[0]; printf("最後に挿入されたレコードのIDは、%d<br />\n", $insert_id);
JAVA