- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
迁移到新服务器后,在执行 SELECT 查询时,如果请求的列值为 NULL,Perl 的 DBI::fetchrow_array()
返回看似空字符串:defined()
返回 1,length()
返回 0。
我读到的所有内容都告诉我,我应该从 NULL 中获取 undef,这确实是它在我的旧服务器上的工作方式。新服务器有一个 MySQL 数据库的副本,我使用 Sequel Pro 的 Export SQL 和 Import SQL 功能迁移了它,这是一个 MySQL gui我在我的 Mac 上运行。对于这两个数据库,有问题的值在 Sequel Pro 中清楚地显示为灰色 NULL,如果我以交互方式运行 mysql
,则显示为 NULL。例如,查看此抄本中的 name
:
mysql> SELECT * from trials WHERE id = 26069 ;
+-------+----------+-----------+---------+--------+ ...
| id | language | numTrials | name | status | ...
+-------+----------+-----------+---------+--------+ ...
| 26069 | en | 3 | NULL | Done | ...
+-------+----------+-----------+---------+--------+ ...
1 row in set (0.00 sec)
我的旧服务器运行的是旧包:
这是我围绕 fetchrow_array
编写的代码:
@result = $statementHandle->fetchrow_array ;
for my $value (@result) {
if (! utf8::is_utf8($value)) {
utf8::decode($value) ;
# Log values for debugging the NULL/undef issue:
my $aValue = $value ;
my $len = length($aValue) ;
if (!defined($value)) {
$aValue = "<unnndefined>" ;
}
print {*::STDLOG} info => "daValue l=$len : $daValue\n" ;
}
}
非常感谢任何可以建议这里可能发生的事情的人!
最佳答案
您的代码将产生警告
Use of uninitialized value in subroutine entry
您调用 utf8::decode($value)
尝试转换 $value
到一个字符串。如果你通过了undef
然后该值将被视为空字符串(带有伴随的警告)并解码并存储
将所有这些代码包含在您的条件语句中似乎很奇怪。当然你只是想要
utf8::decode($value) if $value and not utf8::is_utf8($value);
然后其余代码应该独立于字段的编码状态?
更好的是,你应该确保 DBI
通过添加选项 {mysql_enable_utf8mb4 => 1}
,自动对进出数据库的字符串进行编码和解码。到数据库 connect
称呼。您还需要添加 CHARACTER SET utf8mb4
到CREATE TABLE
或 CREATE DATABASE
声明。 (不要使用 CHARACTER SET utf8
;它是真实 UTF-8 的子集,每个字符限制为三个字节。)当然,您可以 ALTER TABLE
如果需要,在初始创建之后。
关于mysql - Perl DBI::fetchrow_array() 为 NULL 给出空而不是 undef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39807181/
几年前,当我最初学习 Perl 时,我发现自己想说一些类似的话: sleep .07; 但这实际上行不通。 有人教我使用: select undef, undef, undef, .07; 反而。 我
undef $x is different from $x = undef .我的印象是两者都会触发垃圾收集和释放内存,但似乎 $x = undef 不会这样做。 这是语言错误吗?在执行 $x = u
我正在使用铁路 api 构建 Web 应用程序,在提交火车号时我试图显示数据但出现上述错误。实际上我在获取数据时使用了 if else 条件。 下面是代码。 import React, { Com
我在 Perl 中有以下(从错误中理想化的)简短脚本: my %metadata = undef; if (defined %metadata) { print "defined"; } 出于
Julia 中检查数组条目是否为 #undef 的最佳方法是什么? 例子: julia> a = Array(Vector,2) julia> isdefined(a[1]) # fails jul
我有一个全局扩展,它定义了一个名为“is”的方法。我遇到的问题是 ESLink 将其标记为“no-undef”;尽管它在运行时可用。 禁用规则对我来说不是一个选择。我宁愿定义它以便 ESLint 可以
在 Perl 中读取配置文件时,可能会出现某行无效且不需要将其添加到我的有效行数组中的情况。由于我在这里使用 for 循环,因此即使无效行也会创建一个 undef 条目。之后我怎样才能将它们全部删除?
有时候我想写: my $var = shift // undef; # argument is optional # or my $va
我定义了一堆宏,它们只在项目的一小部分范围内发挥作用。我想取消定义它们,这样它们就不会污染全局命名空间,但 Visual Studio 仍然会在其他文件中的#undef 之后确认它们的存在。即: //
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: undef - Why would you want to undefine a method in rub
我正在将一些参数传递给函数,其中一个可能未定义。 $a = ($config->function(param('a'),'int')); 我的模块包含一个如下所示的函数: sub function{
我在一个数组中定义了一些元素: my @arrTest; $arrTest[0]=1; $arrTest[2]=2; #Result for @arrTest is: (1, undef, 2) if
有什么办法可以从 no-undef 中排除特定模式吗?错误。我试过 'no-undef': [2, { ignoreBuiltinGlobals: ['app'] }]哪里app是由 webpack.
我使用教程来学习 React,但很快就卡住了。在教程中,他们使用了这段代码: import React, { Component } from "react"; class Counter exten
我有一个 Moose 类,它的属性起到一定的作用: has foo => (is => 'rw', does => 'Foo::Bar'); 现在我如何更改声明以允许 undef ?我试过 does
我今天似乎很傻,或者我有一个很奇怪的问题。请考虑以下代码: #!/usr/bin/perl use strict; use warnings; use warnings::unused; use wa
我是 react 新手。我的应用程序运行正常,但添加 eslint(airbnb) 后,我的应用程序无法编译。 export default class HelloWorldComponent ext
尝试编译我的应用程序时出现以下错误 - 'getRestaurants' 未定义 no-undef 我无法查明为什么没有为 zipCodeToCoords 定义 getRestaurants 我有一个
我制作了cardList,想通过 map 将卡片添加到cardlist中,但出现此错误 import React from 'react'; import Card from './Card'; co
我想在表的列中插入 null。 哪一个代表 null? undef 或空字符串 ''。 应该使用哪一个,为什么?我知道已定义并且我可以检查它。 但我更多的是从数据库的角度来看。 哪一个更恰本地表示nu
我是一名优秀的程序员,十分优秀!