1

R楽しみのためにパッケージをダウンロードsqldfしましたが、これまでのところ正しく実行できませんでした。データセットを使用してクエリを実行しようとするとiris:

sqldf("select * from iris limit 5")

エラーが発生しましたError in mysqlNewConnection(drv, ...) : RS-DBI driver: (Failed to connect to database: Error: Access denied for user 'myUserName'@'localhost' (using password: NO) ) Error in !dbPreExists : invalid argument type

そこで、ヘルプ ドキュメントを開いて、次のクエリを実行しました。

sqldf("select * from iris limit 5", user="myUser")

エラー メッセージは上記と同じです。これはuser、エラー メッセージがAccess denied for user 'myUser'@'localhost').

では、どうすれば修正して正しく実行できますか?

を使用する際の参考RMySQLまでに、接続を行うために次の引数を使用します。

con <- dbConnect(dbDriver("MySQL"),username="myUser",password="myPass",host="myHost",unix.sock="/tmp/mysql.sock",dbname="myDB")

私は OS X 10.9.1 を使用しており、homebrew でインストールされた MySQL 5.6、および R バージョン 3.0.2 と sqldf バージョン 0.4-6 を使用しています。

ありがとう。

4

3 に答える 3

3

sqldf が SQLLite で動作することを確認することから始めます。

head(sqldf("select * from iris",drv='SQLite'))

次に、常に drv= param を使用するか、明示的に sqldf.driver 変数を設定することを強くお勧めします。library(..) 呼び出しの順序に依存すると、後でバグが発生する可能性があります。

簡単なことをしている場合は、高速で依存関係がほとんどない SQLLite を使用できます (たとえば、コードを移動する場合、MySQL をインストールする必要はありません)。Dates を使用している場合、SQLLite は優れていないため、MySQL を使用することをお勧めします。?sqldf の下部にあるコメントとメモに記載されているように、[Client] セクションを含む mysql の my.cnf をセットアップして、sqldf を含むすべてのクライアントが特定のログインを使用するようにする必要があります。また、dbname が次のように設定されていることを確認してください。

options(sqldf.driver = "RMySQL")
options(RMySQL.dbname = "rtest")
head(sqldf("select * from iris"))

my.cnf なしで MySQL を使用する信頼できる方法を見つけられませんでした。sqldf に明示的な接続を使用してもうまくいきません。ドキュメントに従ってR内からユーザー名などを設定できるため、PostreSQLの方が優れていると思います。

于 2014-02-06T21:13:00.353 に答える
2

RMySQL パッケージをロードした場合は、RMySQL と sqldf パッケージの両方をデタッチして、sqldf パッケージをロードしてみてください。私の以下のコードを見てください

detach(package:RMySQL)
detach(package:sqldf)
library(sqldf)

sqldf("select * from iris limit 5",user="sa", password = "root", host = "192.168.200.182", port=3377)
于 2016-08-03T07:14:18.870 に答える
2

私の場合、sqldf はデフォルトで mysql を使用していたため、最初のエラーに直面しました。それよりも、SQLiteに切り替えたところ、次のコマンドを使用して機能しました。

options(sqldf.driver = "SQLite")
于 2016-03-17T09:02:03.657 に答える