Mysql Perl 6 DBIish已损坏
我已经在macOS v10.13(High Sierra)上安装了DBIish: 我的测试脚本是:Mysql Perl 6 DBIish已损坏,mysql,raku,Mysql,Raku,我已经在macOS v10.13(High Sierra)上安装了DBIish: 我的测试脚本是: use v6; use DBIish; my $host='xxx.xx.xxx.xxx'; my $password='abc@123'; my $dbh = DBIish.connect('mysql', :host, :port(3306), :database<ald_xinen>, :user<aldwx>, :$password); my
use v6;
use DBIish;
my $host='xxx.xx.xxx.xxx';
my $password='abc@123';
my $dbh = DBIish.connect('mysql', :host, :port(3306),
:database<ald_xinen>, :user<aldwx>, :$password);
my $sth = $dbh.do(q:to/STATEMENT/);
DROP TABLE IF EXISTS nom
STATEMENT
$sth = $dbh.do(q:to/STATEMENT/);
CREATE TABLE nom (
name varchar(4),
description varchar(30),
quantity int,
price numeric(5,2)
)
STATEMENT
$sth.finish;
$dbh.dispose;
那么,如何使该脚本工作?您缺少主机参数上的$以进行连接 嗯,我使用了rakudobrew来构建我的rakudo,我会尝试,但仍然会得到相同的错误:这种类型无法取消绑定到本机字符串:P6opaque,Bool。这是Rakudo版本2017.07,基于MoarVM版本2017.07构建,实现Perl 6.c。我建议您在上发布错误报告(仅提供Rakudo Star 2017.07详细信息)。是的,谢谢。如果问题解决了,我会再回来编辑这个问题。好发现!人们怀疑这是否应该自动强制执行。如果它被强迫为“真实”,那么问题可能早就清楚了。或者更好:在
DBIish
中,将Str:D
作为对:$host
的类型限制,将Int:D
作为对:$port
的类型限制。这也会更早地说明问题。哦,是的,谢谢。我忘记了美元$和$sth.execute()代码>语句,但错误可能会误导Meth错误消息是这样的,因为传递给MySQL connect的参数直接传递给本机方法,而NativeCall实现正试图将值解装箱到它期望的字符串。我修改了MySQL的connect()方法,以便显式声明和键入参数。
use v6;
use DBIish;
my $host='xxx.xx.xxx.xxx';
my $password='abc@123';
my $dbh = DBIish.connect('mysql', :host, :port(3306),
:database<ald_xinen>, :user<aldwx>, :$password);
my $sth = $dbh.do(q:to/STATEMENT/);
DROP TABLE IF EXISTS nom
STATEMENT
$sth = $dbh.do(q:to/STATEMENT/);
CREATE TABLE nom (
name varchar(4),
description varchar(30),
quantity int,
price numeric(5,2)
)
STATEMENT
$sth.finish;
$dbh.dispose;
This type cannot unbox to a native string: P6opaque, Bool
in block at /Users/ohmycloud/.rakudobrew/moar-nom/install/share/perl6/site/sources/F2D45FC1BC0A15B4C8511E3A864F1FC1C3F269BB (DBIish) line 41
in any at /Users/ohmycloud/.rakudobrew/moar-nom/install/share/perl6/site/precomp/D3F1031B6C577F31F20F165D75D09B8D4CFEDE2F.1507566035.94084/F2/F2D45FC1BC0A15B4C8511E3A864F1FC1C3F269BB line 1
in method CALL-ME at /Users/ohmycloud/.rakudobrew/moar-nom/install/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) line 550
in method connect at /Users/ohmycloud/.rakudobrew/moar-nom/install/share/perl6/site/sources/9FB1D6F036EF609AD1246C9C77F064F5626EAED2 (DBDish::mysql) line 22
in method connect at /Users/ohmycloud/.rakudobrew/moar-nom/install/share/perl6/site/sources/F2D45FC1BC0A15B4C8511E3A864F1FC1C3F269BB (DBIish) line 45
in block <unit> at /Users/ohmycloud/Downloads/u/ald/Documents/scripts/dbiish.p6 line 8
This is Rakudo version 2017.09-361-g484f98725 built on MoarVM version 2017.09.1-575-gd4e230a6
implementing Perl 6.c.