小编kyl*_*yle的帖子

MySQL外键允许NULL?

我正拼凑一个图片网站.基本模式非常简单的MySQL,但是我在尝试表示与图像相关的可能管理标志("不合适","受版权保护"等)时遇到了一些麻烦.我目前的想法如下:

tblImages (
    imageID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ...
);

tblImageFlags (
    imageFlagID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    imageID INT UNSIGNED NOT NULL,
    flagTypeID INT UNSIGNED NOT NULL,
    resolutionTypeID INT UNSIGNED NOT NULL,
    ...
);

luResolutionTypes (
    resolutionTypeID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    resolutionType VARCHAR(63) NOT NULL,
    ...
);
Run Code Online (Sandbox Code Playgroud)

(为了便于阅读而被截断;各种外键和索引都是有序的,我发誓)

tblImageFlags.flagTypeID在标志类型的查找表上是外键的,你可以想象tblImageFlags.resolutionTypeID 应该是外键的luResolutionTypes.resolutionTypeID.手头的问题是,当首次发布一个标志时,没有逻辑解决方案类型(我很好地宣称这个NULL); 但是,如果设置了一个值,它应该是外键键到查找表.

我找不到这种情况的MySQL语法解决方法.它存在吗?最佳参赛者是:

  • 添加"未经调整"的分辨率类型
  • 添加一个NULL条目luResolutionTypes.resolutionTypeID(这甚至可以在AUTO_INCREMENT列中工作吗?)

感谢您的见解!

PS Bonus指向任何人告诉我,在数据库的情况下,它是"索引"还是"索引".


后续行动:感谢Bill Karwin指出了表格结构中出现的语法错误(NOT NULL如果您希望它允许,请不要设置列NULL …

mysql database null referential-integrity foreign-keys

64
推荐指数
1
解决办法
6万
查看次数

imagecreatefromjpeg正在静默终止脚本

就像我之前的那么多,我正在编写一个PHP脚本来做一些图像缩略图.该脚本已获得WOMM(在我的机器上工作)认证,但当我将其移动到我的主机(1和1 Basic)时,存在一个问题:无法处理某些文件大小以上的图像.我已将所有操作移至文件系统,以确定它不是一个潜在的POST问题.这是相关的代码:


function cropAndResizeImage( $imageLocation )
{
  //
  // Just to be certain
  //
  ini_set('display_errors','on');
  error_reporting(E_ALL);
  ini_set('memory_limit','128M'); 
  ini_set('max_execution_time','300');  

  $image_info   = getimagesize($imageLocation);
  $image_width  = $image_info[0];
  $image_height = $image_info[1];
  $image_type   = $image_info[2];

  switch ( $image_type )
  {
    // snip...
    case IMAGETYPE_JPEG:
      $image = imagecreatefromjpeg($imageLocation);
      break;

    default:
      break;
  }

  // snip...
}
Run Code Online (Sandbox Code Playgroud)

使用我神秘的println调试功能,我已经能够确定它imagecreatefromjpeg没有返回; 实际上,脚本在到达时会完全停止.一些事实:

  • 这与文件大小相关.1MB以下的图像看起来很好(经过现场检查),但图像大约为3MB barf.但不知道精确截止是什么.
  • 这不是由于服务器超时; wget在3MB图像上返回<1s,在"适当小"图像上显着更长(表示没有处理大图像).
  • 使用函数调用前缀@来抑制错误无效.这与脚本没有抛出错误的事实非常匹配,它只是默默地终止于此函数调用.

如果我不得不猜测,可能有一些GD参数我不知道(或有权访问)限制1&1服务器上的输入文件大小 - 配置变量猜测是因为它立即barfs,并且没有(启发式地)出现在图像上进行任何实际加载或计算.

有什么建议?谢谢您的帮助.

更新(礼貌@Darryl的评论):调用phpinfo表明PHP正在更新max_execution_timememory_limit变量.这并不一定意味着正在分配这些资源,只是它们似乎按预期运行.

更新2: …

php gd thumbnails

6
推荐指数
1
解决办法
2206
查看次数