如何使用DBIish连接到本地MySQL服务器8.0 Perl6

问题描述 投票:7回答:2

我工作的一个项目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;

这应该是连接到数据库。然后应用程序运行查询,然后打印出每个结果行。而实际上,该应用程序打每一次“模”的消息。

mysql dbi perl6
2个回答
2
投票

也许在dbiish库的例子不再有效。

该DBIISH_MYSQL_LIB信封似乎取代NativeLibs::Searcher与承诺9bc4191

纵观NativeLibs ::搜索器可以帮助找到问题的根源。


2
投票

这更是一个工作的周围,但暂时无法使用使用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熟悉,但这个模块获取需要做的工作。还有很多更可以用它做什么,所以我强烈建议你阅读的文档。

© www.soinside.com 2019 - 2024. All rights reserved.