$db_config
の使用 変数は私には疑わしいようです。構成ハッシュがおかしいか、キーの代わりに値を使用しています。
$db_config
の場所を表示していません が設定されていますが、次のようになっていると思います:
$db_config = {
name => 'Top_Data',
host => '127.0.0.1',
port => 3306,
username => 'someone',
password => 'a secret',
};
そして、次のように使用します:
my $dsn = "DBI:mysql:database=".$db_config->{name}.";host=".$db_config->{host}.";port=".$db_config->{port};
キー名(name
)を使用していることに注意してください 、host
およびport
)値の代わりに(Top_Data
、127.0.0.1
および3306
。
また、二重引用符で囲まれた文字列内で変数を展開するPerlの機能を使用することで、これを少し単純化できることも指摘しておきます。
my $dsn = "DBI:mysql:database=$db_config->{name};host=$db_config->{host};port=$db_config->{port}";
後で、SQLステートメントに別の問題があります。
my $sql = 'insert into Top(Load_Average, CPU_us, CPU_id, CPU-wa, CPU_hi,
CPU_si, CPU_st, Swap_Total, Swap_Free, Swap_Used, Memory_Total,
Memeory_Free, Memory_Used, Memory_Buff, Date)
values(float,float,float,float,float,float,float,float,
varchar,varchar,varchar,varchar,varchar,varchar,date)';
挿入する必要のある値は、実際のデータ項目です。したがって、文字列「float」、「varchar」、または「date」がある場合、実際にはデータ項目(浮動小数点数、文字列、または日付)が必要です。
最後に、ステートメントを準備したら、それをexecute()
に渡す必要はありません。 方法。ただし、SQLでバインドポイントを使用し、実際のデータ項目をexecute()
に渡すことを検討する必要があります。 電話