Openrestyベストケース|第6編:OpenResty接続Mysql
転載は出典を明記してください.http://blog.csdn.net/forezp/article/details/78616698本文は方志朋のブログから
個人ブログの純版:https://www.fangzhipeng.com/openresty/2018/01/01/openresty-best-practice-6-mysq.html
centosインストールmysl
Centosシステムでmysqlをインストールし、mysql-community-release-el 7-5をダウンロードします.noarch.rpm、そしてyumで取り付けて、取り付け過程はずっと【Y】を確定すればいいです.
インストールに成功したら、mysqlを再起動し、mysqlデータベースに入り、rootユーザーにパスワードを設定します.パスワードは「123」です.
Openresty接続mysql
lua-resty-mysqlモジュールの公式ドキュメントアドレス:https://github.com/openresty/lua-resty-mysql
lua-resty-mysql - Lua MySQL client driver for ngx_lua based on the cosocket API
lua-resty-mysqlモジュールはcosocket APIに基づいてngx_luaはLua MySQLクライアントを提供します.100%非ブロックを保証します.
vim/usr/example/lua/test_mysql.lua、次のコードを追加します.
上記のコードでは、基本的な創表、データの挿入、データの修正、データの照会、データの削除の機能を示しています.
ここで使用されるlua-resty-mysqlのいくつかのAPIメソッド: syntax:db,err=mysql:new()mysqlデータベース接続オブジェクト を作成する syntax:ok,err=db:connect(options)リモート接続mysqlを試みる host mysqlのホスト名 portポート databaseデータベース名 userユーザー名 passwordパスワード charset符号化 syntax: db:set_timeout(time)データベース接続タイムアウト時間 を設定する syntax: ok, err = db:set_keepalive(max_idle_timeout,pool_size)接続プール を設定する. syntax:ok,err=db:close()データベースを閉じる syntax: bytes, err = db:send_query(query)送信クエリ lua-resty-mysqlのいくつかの肝心なAPI方法、参照https://github.com/openresty/lua-resty-mysql#table-of-contents
vim/usr/example/example.confのプロファイル構成:
ブラウザアクセスhttp://116.196.177.123/lua_mysql、ブラウザには次の内容が表示されます.
詳細
史上最も簡単なSpringCloudチュートリアルの概要
SpringBootチュートリアルの概要
Java面接問題シリーズまとめ
スキャンコード公衆番号に注目サプライズ
(当駅の文章を転載するには作者と出典方志朋のブログを明記してください)
個人ブログの純版:https://www.fangzhipeng.com/openresty/2018/01/01/openresty-best-practice-6-mysq.html
centosインストールmysl
Centosシステムでmysqlをインストールし、mysql-community-release-el 7-5をダウンロードします.noarch.rpm、そしてyumで取り付けて、取り付け過程はずっと【Y】を確定すればいいです.
cd /usr/downloads/
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server
インストールに成功したら、mysqlを再起動し、mysqlデータベースに入り、rootユーザーにパスワードを設定します.パスワードは「123」です.
service mysqld restart
mysql -u root -p
set password for root@localhost = password('123');
Openresty接続mysql
lua-resty-mysqlモジュールの公式ドキュメントアドレス:https://github.com/openresty/lua-resty-mysql
lua-resty-mysql - Lua MySQL client driver for ngx_lua based on the cosocket API
lua-resty-mysqlモジュールはcosocket APIに基づいてngx_luaはLua MySQLクライアントを提供します.100%非ブロックを保証します.
vim/usr/example/lua/test_mysql.lua、次のコードを追加します.
local function close_db(db)
if not db then
return
end
db:close()
end
local mysql = require("resty.mysql")
local db, err = mysql:new()
if not db then
ngx.say("new mysql error : ", err)
return
end
db:set_timeout(1000)
local props = {
host = "127.0.0.1",
port = 3306,
database = "mysql",
user = "root",
password = "123"
}
local res, err, errno, sqlstate = db:connect(props)
if not res then
ngx.say("connect to mysql error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
return close_db(db)
end
local drop_table_sql = "drop table if exists test"
res, err, errno, sqlstate = db:query(drop_table_sql)
if not res then
ngx.say("drop table error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
return close_db(db)
end
local create_table_sql = "create table test(id int primary key auto_increment, ch varchar(100))"
res, err, errno, sqlstate = db:query(create_table_sql)
if not res then
ngx.say("create table error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
return close_db(db)
end
local insert_sql = "insert into test (ch) values('hello')"
res, err, errno, sqlstate = db:query(insert_sql)
if not res then
ngx.say("insert error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
return close_db(db)
end
res, err, errno, sqlstate = db:query(insert_sql)
ngx.say("insert rows : ", res.affected_rows, " , id : ", res.insert_id, "
")
local update_sql = "update test set ch = 'hello2' where id =" .. res.insert_id
res, err, errno, sqlstate = db:query(update_sql)
if not res then
ngx.say("update error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
return close_db(db)
end
ngx.say("update rows : ", res.affected_rows, "
")
local select_sql = "select id, ch from test"
res, err, errno, sqlstate = db:query(select_sql)
if not res then
ngx.say("select error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
return close_db(db)
end
for i, row in ipairs(res) do
for name, value in pairs(row) do
ngx.say("select row ", i, " : ", name, " = ", value, "
")
end
end
ngx.say("
")
local ch_param = ngx.req.get_uri_args()["ch"] or ''
local query_sql = "select id, ch from test where ch = " .. ngx.quote_sql_str(ch_param)
res, err, errno, sqlstate = db:query(query_sql)
if not res then
ngx.say("select error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
return close_db(db)
end
for i, row in ipairs(res) do
for name, value in pairs(row) do
ngx.say("select row ", i, " : ", name, " = ", value, "
")
end
end
local delete_sql = "delete from test"
res, err, errno, sqlstate = db:query(delete_sql)
if not res then
ngx.say("delete error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
return close_db(db)
end
ngx.say("delete rows : ", res.affected_rows, "
")
close_db(db)
上記のコードでは、基本的な創表、データの挿入、データの修正、データの照会、データの削除の機能を示しています.
ここで使用されるlua-resty-mysqlのいくつかのAPIメソッド:
vim/usr/example/example.confのプロファイル構成:
location /lua_mysql {
default_type 'text/html';
lua_code_cache on;
content_by_lua_file /usr/example/lua/test_mysql.lua;
}
ブラウザアクセスhttp://116.196.177.123/lua_mysql、ブラウザには次の内容が表示されます.
insert rows : 1 , id : 2
update rows : 1
select row 1 : ch = hello
select row 1 : id = 1
select row 2 : ch = hello2
select row 2 : id = 2
delete rows : 2
詳細
史上最も簡単なSpringCloudチュートリアルの概要
SpringBootチュートリアルの概要
Java面接問題シリーズまとめ
スキャンコード公衆番号に注目サプライズ
(当駅の文章を転載するには作者と出典方志朋のブログを明記してください)