MariaDB: AUTO_INCREMENTをリセット、もしくは任意の数字から始める方法

AUTO_INCREMENTを使ってテストをしている時に、TABLEをDELETEしてもその前が2で終わっていたら3から始まってしまいます。

本番ではいいのですが、やはりテストでは1から始まって欲しいときが多々あると思います。

すぐに忘れてしまうので自分用にメモ。

ALTER TABLE table_hoge AUTO_INCREMENT = 1;

応用して15から始めたいときは、

ALTER TABLE table_hoge AUTO_INCREMENT = 15;

 

MySQL: 外部結合してDELETEでエラー

外部結合する場合はどのTABLEで削除するのかが不明になるのでTABLEを指定してあげないとエラーを起こす。

DELETE table_1 FROM table_1 LEFT JOIN table_2 ON table_1.id = table_2.id WHERE table_2.id IS NULL;

もちろんASを使っても可能。

DELETE a FROM table_1 AS a LEFT JOIN table_2 AS b ON a.id = b.id WHERE b.id IS NULL;

 

MariaDBインストール直後に日本語が文字化ける問題

最初の設定でutf8_general_ciにしておいたのですが、サーバー側の設定を修正しないと日本語が文字化けるようです。

phpMyAdminで

show variables like 'char%';

を実行してみると、
「character_set_server」がlatin1になってました。

/Applications/XAMPP/xamppfiles/etc/my.cnf
をCotEditorで開いて、どこでもいいのですが下の方にでも

[mysqld]
character-set-server=utf8

と追加し、mariaDBを再起動します。
もう一度

show variables like 'char%';

を実行して設定の変更を確認します。

phpMyAdminでTABLEを再描画したのですが文字化けが直らず、「あれ?」と思ったのですがキャッシュのようです。
一度別のTABLEに移動してから元のTABLEに戻ったら文字化けが解消されていました。

PHP7でのMySQL(MariaDB)の基本構文

一部書く順番が逆になったのですね。
PHP5.6であぐらをかいていたらヒヤヒヤでした。

PDOはスピードが遅くなるらしいので、基本的にうちでは「手続き型」と呼ばれる方法を使用しています。
mysqlで始まるコードは非推奨になったそうなので、mysqliを使用しています(iを追加)。

<?php
$link=mysqli_connect('ホスト', 'ユーザー名', 'パスワード', 'DB名');

$test='SELECT id FROM hoge LIMIT 1';
$query_test=mysqli_query($link, $test);//ここの$linkと$testが従来の逆になっている
$result_test=mysqli_fetch_array($query_test);
print $result_test['id'];

mysqli_close($link);
?>

PHP5から7の移行は難しいですね。
新たに作り直すなら7にしておかないと後で痛い目にあいそうです。

PHP:MariaDBとPHP7を接続する

ゴリゴリとまた開発を再開しました。
どうせ作り直すならXAMPPを最新バージョンにしようとPHPを5から7にしたのですが、以前は普通に繋がっていたMySQLに接続できなくなりました。

エラーの内容は、

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /Applications/XAMPP/xamppfiles/htdocs/hoge/hoge.php:1 Stack trace: #0 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/hoge/hoge.php on line 1

phpMyAdminをチェックすると「サーバの種類: MariaDB」の文字。

ゲゲッ、これが噂のMariaDB・・・(MySQLの開発者が自分の娘の名前を付けたという)。
どうせいつかはみなMariaにしないといけないので、諦めてコードを書き直す作業を始めました。

ネットで調べるとPDOを使った方法ばかりなので、自分はもっとシンプルなやり方にしてみました。

$link=mysqli_connect('ホスト名またはIPアドレス', 'ユーザ名', 'パスワード', 'データベース名');

mysqli_close($link);

なぜPDOを使用するやり方が主流なのか?
自分は疑問に思ったのですが、MySQLでもPostgreSQLでも同じ命令で済むから、ということらしいです。

自宅システム部としては不要なので簡素化しました。