我工作的一个项目Perl6,但在连接到MySQL的难度。使用DBIish即使当(或perl6.org教程)示例代码中,连接失败。任何建议或意见表示赞赏!用户凭据已证实准确了。
我与MySQL服务器8.0和标准Perl6与Rakudo星在Windows 10上运行此。我试图修改像多种方式连接字符串:$密码:<>密码:密码()等,但不能获得建立连接。还应该注意到,我有ODBC,C,C ++,and.Net安装的连接器。
#!/usr/bin/perl6
use v6.c;
use lib 'lib';
use DBIish;
use Register::User;
# Windows support
%*ENV<DBIISH_MYSQL_LIB> = "C:/Program Files/MySQL/MySQL Server 8.0/liblibmysql.dll"
if $*DISTRO.is-win;
my $dbh = DBIish.connect('mysql', :host<localhost>, :port(3306), :database<dbNameHere>, :user<usernameHere>, :password<pwdIsHere>) or die "couldn't connect to database";
my $sth = $dbh.prepare(q:to/STATEMENT/);
SELECT *
FROM users
STATEMENT
$sth.execute();
my @rows = $sth.allrows();
for @rows { .print }
say @rows.elems;
$sth.finish;
$dbh.dispose;
这应该是连接到数据库。然后应用程序运行查询,然后打印出每个结果行。而实际上,该应用程序打每一次“模”的消息。
也许在dbiish库的例子不再有效。
该DBIISH_MYSQL_LIB信封似乎取代NativeLibs::Searcher与承诺9bc4191
纵观NativeLibs ::搜索器可以帮助找到问题的根源。
这更是一个工作的周围,但暂时无法使用使用DB是沉重的。因此,即使试图使用NativeLibs当我无法获得通过DBIish的连接。相反,我已经选择使用被证明DB::MySQL是相当有帮助的。随着几行代码模块有你的数据库的需求所覆盖:
use DB::MySQL;
my $mysql = DB::MySQL.new(:database<databaseName>, :user<userName>, :password<passwordHere>);
my @users = $mysql.query('select * from users').arrays;
for @users { say "user #$_[0]: $_[1] $_[2]"; }
#Results would be:
#user #1: FirstName LastName
#user #2: FirstName LastName
#etc...
这将打印出,如上所示格式化的每个用户的线路。它并不像DBIish熟悉,但这个模块获取需要做的工作。还有很多更可以用它做什么,所以我强烈建议你阅读的文档。