Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Perl 6 DBIish已损坏_Mysql_Raku - Fatal编程技术网

Mysql Perl 6 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

我已经在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 $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.