2017年8月6日日曜日

MySQL Error Code:1175 [mysql]

mysqlで以下のUpdate文を実行するとエラー(1175)が発生した。

update tbla set user_busyo = 'abc' where user_busyo = 'ABC';

マニュアルを見るとmysqlでは「UPDATE ステートメントまたは DELETE ステートメントは、WHERE 句にキーの制約を指定するか、LIMIT 句を提供するか (または両方) しないかぎり実行を許可されません。 」とあった。
https://dev.mysql.com/doc/refman/5.6/ja/mysql-tips.html

誤って全行を削除したり更新したりしてしまうのを防ぐための機能だそうです。
上記のSQL文もwhere句にキーを指定していないケースなので、mysql側で防止機能が働いたようです。

解除するには SET SQL_SAFE_UPDATES = 0; をSQL文の前に記述するか
サーバーシステム変数を変更する必要があるようです。
https://dev.mysql.com/doc/refman/5.6/ja/server-system-variables.html

かなりはまりました。。。
以上です。

2017年8月5日土曜日

MySQL ストアド select結果を変数に代入 [mysql]

MySqlのストアドプロシージャでselect文で取得した値を変数に代入するにはintoを用いる。

(例) テーブルのレコード件数取得
select count(id) into @total from table;

@total にレコード件数が代入されました。
以上です。

2017年8月4日金曜日

mysql ストアドプロシージャ実行 [mysql]

ストアドプロシージャの実行方法をメモします。

call ”ストアド名”;
です。。。
以上。