エラーメッセージ

VirtualBoxで「*ERROR* Failed to send host log message」が表示された時の、

対処方法について紹介します。

 

■ エラーメッセージ

[drm:vmw_host_log [vmwgfx]] *ERROR* Failed to send host log message.

[drm:vmw_host_log [vmwgfx]] *ERROR* Failed to send host log message.

 

 

エラー解消方法

変更するのは1つだけです。

設定>ディスプレイ>グラフィックスコントローラーを「VBoxVGA」に変更で直ります。

 

 

現象(2021年2月に発生)

VirtualBox上からCentOSを起動しようとした時に、次のメッセージが出た時の対処法です。

 

 

【メッセージ内容】

仮想マシン"(自分で設定した名前が入ります)"のセッションを開けませんでした。

Call to WHvSetupPartition failed: ERROR_SUCCESS (Last=0xc000000d/87) (VERR_NEM_VM_CREATE_FAILED).

終了コード : E_FAIL (0x80004005)
コンポーネント: ConsoleWrap
インターフェース: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

 

【使用していた環境】 ※2021年2月に発生

・Windows 10 Home

・VirtualBox-6.1.18

・CentOS Stream 8

 

 

解決方法

解決方法は、次のコマンドをコマンドプロンプトで実行し再起動するだけです。

※ コマンドプロンプトは右クリックから「管理者として実行」で実行して下さい。

bcdedit /set hypervisorlaunchtype off

 

「この操作を正しく終了しました。」と表示されたらOKです。

再起動し再度VirtualBoxから起動を試してください。

 

※ 尚、変更した設定を戻すには次のコマンドを入力します。

bcdedit /set hypervisorlaunchtype auto

 

以上、困ってここにたどり着いた人の参考になれば幸いです。

 

現象(2021年2月に発生)

VirtualBox上にCentOS Streamをインストールをしようとしましたが、

次の画面のように黒い画面に「_」が一つでたまま進まない現象が発生しました。

 

待てば進むかとも思いましたが、数時待っても変わりませんでした。

結果として解決できたので同じ現象に困った人の参考になれば。

 

 

【使用していた環境】 ※2021年2月に発生

・Windows 10 Home

・VirtualBox-6.1.18(VirtualBox-6.1.18-142142-Win.exe)

・CentOS Stream 8(CentOS-Stream-8-x86_64-20210223-boot.iso)

 

 

解決方法

解決した方法ですが、

「VirtualBox 6.1.18」から1つ前の「VirtualBox 6.0.24」へバージョンを下げたら解決しました。

※ 古いバージョンのダウンロードはこちらからできます。

 

また、環境によるのかもしれませんが、

私のPCではバージョンをさげてインストールをはじめたら、次のエラーがでるようになりました。

 

 

このエラーは、さきほどの古いバージョンをダウンロードするところにある、

Extension Packをインストールをしたら解決しました。

 

 

 

インストール方法は、VirtualBox起動後>左上のファイル>拡張機能で、

ダウンロードしたファイルを選択すればインストールができます。

 

以上、困ってここにたどり着いた人の参考になれば幸いです。

 

各バージョンのサポート期限

2021年2月現在、CentOSのサポートについて発表されている情報をまとめました。

CentOS 8は2021年12月31日でサポート終了。CentOS Streamへ注力すると発表があった。

  ※ サポート終了後は、セキュリティパッチ含むアップデートの提供がされなくなる

・ CentOS 7についてはこれまで通りライフサイクルに合わせて公開が続けられる。

・ CentOS 9はリリースはされない。

・ 開発元は、「CentOS Stream 8」に移行することを推奨している。

・ ベンダーによっては、すでにCentOS 8を導入済のユーザーに対しての延長サポートあり。

・ 救済措置がないとも言えないが、希望を持たず移行を進めていくべき

 

バージョン サポート終了期限
CentOS 6 2020年11月30日(終了)
CentOS 7 2024年6月30日まで
CentOS 8

2029年5月31日まで

2021年12月31日(2020年12月8日に発表)

※ CentOS Streamについてはこちらのサイトが参考になります。

 

 

移行先の検討

移行先の選択肢としては次のとおり

・ Ubuntu Server

・ AWSの場合は、Amazon Linux2

・ Red Hat Enterprise Linux(有償)

・ CentOS 7へ戻す

・ その他(Oracle Linux 8、AlmaLinux、RockyLinux)

 

それぞれのLinuxへPostgreSQLをインストールする方法はこちら

 

プロシージャ(PROCEDURE)を実行する・呼び出す方法

プロシージャを実行する・呼び出す方法を紹介します。

-- プロシージャを実行する(呼び出す)
-- 呼び出すにはcallを使う(selectは不可)
call プロシージャ名(引数1 , 引数2 , ・・・); 

-- 呼び出し例 
call testproc(1,2,3);  

 

 

構文まとめを書いています。

「基本構文・こんな時どう書くんだっけ?」をまとめました

 

CREATE PROCEDUREのテンプレートを用意しました

一から作成すると手間なPROCEDURE用にテンプレを用意しました。

引数や返り値を変更するだけで簡単に作成ができます。

正直自分用なのですが、テンプレとして公開します。

CREATE OR REPLACE PROCEDURE testproc(                   --プロシージャ名は要変更
INOUT num1 integer,INOUT num2 integer,IN num3 integer)  --引数(下に補足あり)
LANGUAGE 'plpgsql' AS $BODY$
BEGIN
	--処理を記載
END;
$BODY$;

引数:IN=引数のみ、INOUT=引数+返り値としても使用される ※OUTのみは不可

 

 

構文まとめを書いています。

「基本構文・こんな時どう書くんだっけ?」をまとめました

 

引数にデフォルト値を設定する

関数の引数に初期値を設定する書き方を紹介します。

-- 構文
関数名(変数名 型 default 初期値)

-- 例
CREATE OR REPLACE FUNCTION testfnc(arg1 integer default -1) --引数に初期値を設定する
RETURNS integer
LANGUAGE 'plpgsql' COST 100 VOLATILE AS $BODY$
declare
begin
	return arg1;     -- 引数をそのまま返す関数
end;
$BODY$;

--動作確認(実行すると次のようになります)
select testfnc(3);   -- 結果:3(引数で設定した値が返る)
select testfnc();    -- 結果:-1(デフォルト値が返る)

 

 

構文まとめを書いています。

「基本構文・こんな時どう書くんだっけ?」をまとめました

 

CREATE FUNCTIONのテンプレートを用意しました

作成が手間なFUNCTION用にテンプレを用意しました(そのまま実行できるようになってます)。

引数や返り値を変更するだけで簡単に作成ができますので、ぜひ使ってみて下さい。

CREATE OR REPLACE FUNCTION samplefnc
(arg1 character varying,arg2 numeric) -- 引数は2つで作成(arg1 , arg2)
RETURNS boolean
LANGUAGE 'plpgsql' COST 100 VOLATILE AS $BODY$
declare
	--変数宣言
	variable1 character(10);
begin

	--変数に値をセット
	variable1 = 'abc';

	--処理を記載
	raise info '引数1(arg1) : %' , arg1;
	raise info '引数2(arg2) : %' , arg2;
	raise info '変数1(variable1) : %' , variable1;

	-- 返り値はboolean型なのでここはbooleanでリターン(とりあえず)
	return true;
	
end;
$BODY$;


--上の関数を実行
select * from samplefnc('test1',0);

 

あわせて読みたい

上の関数で使用しているraiseは変数の値を画面に表示するために使用しています。詳しくはこちら

https://postgresweb.com/post-2852

 

 

引数や返り値の型を変更する

関数の作成後に、引数や返り値の型を変更するには、一度関数をDROPして下さい。

-- DROP FUNCTIONの実行例
DROP FUNCTION samplefnc(arg1 character varying,arg2 numeric);

 

 

関連記事(関数)

変数の宣言、変数宣言時に代入する、定数を宣言する方法

IF文の書き方(条件分岐)

For文(ループ文)の書き方

配列をループさせる

SQL(SELECT文)の結果をループする方法

SQLの結果を変数に格納する

変数の値を画面に出す(raise)

 

While文(ループ文)の書き方

PostgreSQLにおけるWhile文の書き方です。

while 条件文 loop
	--条件文がtrueの時にここに書いた処理を繰り返す
end loop;
あわせて読みたい

https://postgresweb.com/post-2861

 

 

使用例

while hoge < 10 loop	    
	raise info '%', hoge;   -- hoge の値を表示
	hoge = hoge + 1;        -- カウントアップ
end loop;

※使用しているraise文はこちらで説明しています。

変数の値を画面に出す(raise)

 

 

ループ文の抜け方

ループ文から途中で抜けるには、EXITを使います。

while hoge < 10 loop
	raise info '%', hoge;   --変数の値を表示
	
  if hoge= 5 then
	    exit;               --exitで強制的にループを抜ける
	end if;
	
  hoge= hoge+ 1;
end loop;

 

概要

何をするにもまず必要なのがデータベースです。

ここでは、PostgreSQLでデータベースを作成する手順を解説します。

 

 

データベースを作成する手順

①pgAdminを起動します。

 

 

②『Servers(1)』→『PostgreSQL 12』→『データベース(1)』とクリックしていき、

画面のように展開します。

 

 

③『データベース(1)』を右クリックし、『作成 - データベース』とクリックします。

 

 

④データベース(赤枠)の個所に作成するデータベース名を入力し、右下の「保存」を押します。

(画面では「testdb」としました。)

 

 

⑤画面のように表示されれば、データベースの作成が完了です。

 

⑥データベースができたら、次はデータを登録するためのテーブルを作ってみましょう