2016-09-28 6 views
0

cronジョブから毎日実行されるPHPスクリプトを使用して、テキストデータを含む大きなzipファイルを解凍し、これをmySQLデータベースに保存します。PHP 5.6 - 使用されているコマンドはこのMySQLバージョンでは許可されていません

zipファイルは、phpファイルがホストされているFTPサイトに毎日更新され、アップロードされます。

これは、すべての数ヶ月のために100%の罰金を働いたが、私は最近、当社のホスティングは、PHPバージョン5.6に自分自身をアップグレードしました、そして今、私はこれらのエラーを取得すると思う:

Error populating table: The used command is not allowed with this MySQL version 

MySQLのテーブルを移入するコードを

$loadfile = "LOAD DATA LOCAL INFILE '$textfile' INTO TABLE $tablename FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' IGNORE 1 LINES"; 
mysqli_query($conn, $loadfile) 

私が実際に理解していないことは、時にはうまくいくと思われ、ときどき失敗することです。たぶん週に一度は今は大丈夫ですが、他の日は失敗します。

PHPで何か変わったことは、上記のコードが間違っていることを意味しますか?

上記のコードを参考にして、PHP 5.6で確実に動作させることができますか?

+0

だけで考えたのは、あなたがMySQLのバージョンを確認 – RiggsFolly

+0

しゃっくりを引き起こしているいくつかの微妙な方法で変更ロードしているデータを持っています。 echo '$ loadfile'を実行するには、mysqlのrawクエリをcmdまたはphpmyadminから実行してみてください。これはPHPのバージョンには関係ありません。 –

+0

だから、その質問は重複していません。 load dataコマンドが有効であることを確認しました。そしてデータフォーマットは変更されていません。私はホスト(1&1)が最近PHPバージョンを更新したことを知っていますが、mysqlバージョンが変更されたかどうかはわかりません。 – Richard

答えて

0

実行して、この:詳細についてはshow variables like '%local%'

'オフ' local_infile =の場合、それ

'オン' は、手順に従ってみてください。このリンクに Mysql Load data

を確認してください。

1)my.cnfを開き、[mysqld]と[mysql]の下に "local-infile = 1"という行を追加しました

[mysqldを] ローカルINFILE = 1

【のMySQL] ローカルINFILE = 1

ファイルを保存して終了します。

は、ユーザー

のmysql>上の助成ファイルの

2)助成金のファイル権限を再起動し/etc/init.d/mysql。ユーザー@ 'localhost'への

mysql>フラッシュ特権。

3)再起動のMySQL

1)オープンのmy.cnfを再起動し、追加/etc/rc.d/init.d/mysql線「ローカルINFILE = 1」の[mysqldを]および[mysqlの]

[mysqldを] ローカル-INFILE = 1

[mysqlの] ローカル-INFILE = 1

ファイルを保存して終了します。

/etc/init。d/mysqlの再起動

2)上記のコマンドはmysqlシェルで実行できますが、ブラウザ上でphpスクリプトとして実行しているときに問題があります。 PHPで有効になっているかどうかを確認してください。

ルート@ abcの#grepのmysql.allow_local_infile /etc/php5/apache2/php.ini mysql.allow_local_infile =今

では、上記のコマンドは、それが有効になっていることを示します。オフの場合は、オンに変更してapacheを再起動します。

3)次のようにconnectコマンドを編集してスクリプトを少し修正しようとしました。

mysql_connect( "localhost"、 "myuser"、 "mypass"、 "false"、128);

リンク参照:The used command is not allowed with this MySQL version – LOAD DATA LOCAL INFILE

+0

local_infileがオンです。私はこのaleadyをチェックした。 – Richard

関連する問題