我目前在设置AS400(iseries V6R1)和Debian之间的odbc链接时遇到一些问题,我使用iseriesAccess7.1
odbc驱动程序64位,unixODBC2.3.1和php5.4以及unixODBC支持。
我的链接似乎很好,因为我可以使用isql命令(它是unixODBC的一部分)连接到我的数据库,并执行一些SQL查询,但是使用php脚本无法读取数据库中的记录。当我尝试在Intranet上启动一个小脚本时,出现以下错误:
致命错误:在第122行的/home/www/imypdo/imypdo.php中,耗尽了134217728字节的允许的内存大小(试图分配493921239296字节)
超过450 Gb!在/ var / log / messages和/ etc / httpd / logs / error_log中没有任何内容
一个简单的sql查询(select中只有1行)将返回一些奇怪的字符(请参见下文),并且一旦我选择了1或2行,就会发生内存大小错误。
[0] =>数组([ADHMAR] => AAAAAAA a @YÿŒ4-X0!ÿŒ4làÿŒ4làÿŒ4!)
我几乎可以肯定这是一个与64位驱动程序相关的问题,因为我已经有另一个Debian与该iseries关联,但是与32位驱动程序相关联,并且可以完美运行。奇怪的是,isql命令正在运行,而日志文件中什么也没有。
如果确实是64位驱动程序问题,我如何向IBM证明呢?
任何帮助将不胜感激
谢谢
---------------------------要连接的类-------------------- --------
private $_bdd = "DSN=db2;",
$_user = "USERNAME",
$_pwd = "Password";
private $_con,
$_isConnected;
public function open_connection(){
$this->_con = odbc_connect ($this->_bdd, $this->_user, $this->_pwd ) or die("Error Connection") ;
$this->_isConnected = true;
}
public function close_connection(){
odbc_close($this->_con);
$this->_isConnected = false;
}
public function execute($sql){
if(!($this->_isConnected))
$this->open_connection();
#execute sql
$res = odbc_exec($this->_con, $sql);
return $res;
}
public function fetchRow($res){
$row = odbc_fetch_array($res);
return $row;
}
}
---------------------------------查询脚本--------------- ---------------
public function getPhoneLogsByDate($startDate, $endDate) {
$startDate = date('Ymd', strtotime($startDate));
$endDate = date('Ymd', strtotime($endDate));
$rr = new As400_Model_as400query();
$rr->open_connection();
$sql = "select trim(tluser) as USER, trim(tlacct) as CLIENT, trim(concat(concat(concat(concat(concat(concat(substr(trim(tldate),1,4),'-'),substr(trim(tldate),5,2)),'-'),substr(trim(tldate),7,2)),' '), concat(concat(concat(concat(substr( substr(trim(tltime+1000000),2,6),1,2),':'),substr(substr(trim(tltime+1000000),2,6),3,2)),':'), substr(substr(trim(tltime+1000000),2,6),5,2)))) as DATETIME
,trim(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(trreas,'|'),trsr01),'|'),trsr02),'|'),trsr03),'|'),trsr04),'|'),trsr05)) as REASONS
,trim(concat(concat(concat(tnnot1,tnnot2),tnnot3),tnnot4)) as NOTES
from cabledta.tlogmstr left join cabledta.tlogreas on trnum#=tlnum# left join cabledta.tlognote on tnnum#=tlnum#
where tldate>='".$startDate."' and tldate <='".$endDate."'";
$res = $rr->execute($sql);
$response = array();
while ($row = $rr->fetchRow($res)){
$response[] = array(
'userName' => $row['USER'],
'clientNumber' => $row['CLIENT'],
'logDateTime' => $row['DATETIME'],
'logReasons' => $row['REASONS'],
'logNotes' => utf8_encode($row['NOTES'])
);
}
$rr->close_connection();
return $response;
}
我知道了。
在64位版本中,当返回字段之一为NULL时,odbc崩溃。因此,解决方法是在检索查询时替换所有空字段。
例如:
从database.table中选择ifnull(tluser,’‘)作为USER
我在尝试使用Symfony 5时遇到以下错误 我知道如何修补(memory_limit=-1),但我想知道为什么我有这个错误。 错误: PHP致命错误:允许内存大小为134217728字节耗尽(试图分配32230840字节) /Applications/MAMP/htdocs/Toile./vendor/twig/twig/src/Lexer.php在第157行 15:50:13关键[php]致命
我正在尝试使用此命令在我的博客中安装laravel passport 作曲家需要laravel/护照 但是在安装的时候,我面临着这样的致命错误 **致命错误:允许内存大小1610612736字节耗尽(试图分配4096字节)在phar://C:/用户/Hamid/AppData/本地/ComposerSetup/bin/composer.phar/src/Composer/DependencyRes
问题内容: 我没有处理大文件的经验,所以我不确定该怎么办。我试图使用 file_get_contents 读取几个大文件;任务是使用 preg_replace() 清洁和修补它们。 我的代码在小文件上运行良好;但是,大文件(40 MB)触发内存耗尽错误: 我当时在考虑使用 fread(), 但是我不确定那也行。有解决此问题的方法吗? 感谢您的输入。 这是我的代码: 问题答案: 首先,您应该了解,在
我知道这个问题已经贴在这里了,但我似乎无法修复它。 问题是Drupal需要的内存比php允许的要多。 运行phpinfo()我发现配置文件路径是: /Applications/MAMP/bin/php/php5.4.10/conf/php.ini,我调整了该文件。(memory_limit=1028) 我还调整了:主php。ini(MAMP/conf/php5.4.10)drupal设置。php(
以下是完整的错误: 致命错误:允许内存大小为134217728字节耗尽(尝试分配131072字节) /sites/apps/seller/www/application/libraries/Excel/PHPExcel/CachedObjectStorage/CacheBase.php行173 这是mu代码: 我使用codeigniter框架和phpexcel库。非常感谢。
我已经安装Laravel使用Hostinger自动安装程序。现在,我试图安装的Auth UI使用这个命令:。 我还尝试从命令末尾删除该版本。它显示: 致命错误:允许的内存大小。 请告诉我如何解决这个问题。