草庐IT

php - Laravel 与 SQL Server 2008 抛出 "Conversion of a varchar data type to a datetime data type resulted in an out-of-range value"

我在SQLServer2008中使用laravel4.1我创建了一个基于Eloquentorm的带有时间戳的模型:classAttendanceextends\Eloquent{protected$table='Attendance';publicfunctionusers(){return$this->belongsToMany('User','Users_Attendance','user_id','attendance_id');}}当我尝试插入新字段时:publicfunctionpostAttendanceUsers(){$attendance=newAttendance;$

php - 为什么 Eloquent(在 Laravel 中)将我的 varchar uuid 主键转换为整数导致错误?

跟进我昨晚的question,我睡了个好觉,并“发现”这是由于自动转换/类型转换或其他原因造成的。求和:模型使用uuid作为主键他们在从mySQL插入时通过触发器获取它们为了获取数据库运行时生成的uuid,我调用了$model_object->fresh();fresh()这在获取整个对象时有效,但在仅选择一个属性时无效型号Controller(搞砸的地方)publicfunctionstore(Request$request){$input=$request->all();$address=Address::create($input);var_dump($address);exit

MySQL VARCHAR(255) UTF8 对于 key 来说太长,但最大长度为 1000 字节

我知道对此有很多问题,但我认为我的数学是正确的。MySQL为每个UTF8字符保留3个字节。MyISAM允许长度为1000字节的key。我的UTF8VARCHAR(255)应该是255*3=765字节除非UNQUE每个条目需要额外的200+字节,否则为什么这不起作用?mysql>ALTERTABLEentryADDUNIQUEINDEX(name(255));ERROR1071(42000):Specifiedkeywastoolong;maxkeylengthis1000bytes对此我有什么办法吗?编辑:原来限制是250。对于唯一索引,字符似乎计为4个字节,但我不知道为什么。编辑2:

MySQL VARCHAR(255) UTF8 对于 key 来说太长,但最大长度为 1000 字节

我知道对此有很多问题,但我认为我的数学是正确的。MySQL为每个UTF8字符保留3个字节。MyISAM允许长度为1000字节的key。我的UTF8VARCHAR(255)应该是255*3=765字节除非UNQUE每个条目需要额外的200+字节,否则为什么这不起作用?mysql>ALTERTABLEentryADDUNIQUEINDEX(name(255));ERROR1071(42000):Specifiedkeywastoolong;maxkeylengthis1000bytes对此我有什么办法吗?编辑:原来限制是250。对于唯一索引,字符似乎计为4个字节,但我不知道为什么。编辑2:

php - 在 SQL Server 中将 Varchar 值转换为整数/小数值

如何将数据类型为varchar的表中的记录值转换为integer或decimal这样我就可以得到值(value)。我使用SQLServer2005。假设我有这样的表结构:IDintStuffvarchar和记录ID=1,Stuff=32.43ID=2,Stuff=43.33ID=3,Stuff=23.22现在我想得到Stuff列的总数:SELECTSUM(convert(decimal(4,2),Stuff))asresultFROMtable但它不起作用。请需要帮助! 最佳答案 表结构...非常基本:createtabletabl

php - sql server 存储过程使用 varchar max 作为参数

我有一个使用php+mssql的相对简单的网站。我有各种存储过程可以执行简单的插入和删除工作。我面临的问题是,我传递给存储过程的许多参数的长度与我要插入数据的列的长度相同。例如,我有一个注册用户的存储过程。存储过程有一个参数@USERNAME,类型为varchar(12)。USER表中的列USERNAME具有与该长度相同的类型。原则上这不是真正的问题。但我宁愿能够自由更改USERNAME列的长度,而不必同时更改存储过程参数的长度。我不能使用表值参数,因为mssqlphp驱动程序不支持它们。我能想到的唯一解决方案是只对存储过程参数使用varchar(max),但这被认为是不好的做法吗?

mysql - 我可以使用 VARCHAR 作为主键吗?

我有一个用于存储优惠券/折扣的表,我想使用coupon_code列作为主键,它是一个VARCHAR。我的理由是,每张优惠券都有一个唯一的代码,我将运行的唯一命令是SELECT...FROM...WHEREcoupon_code='..'我不会进行任何连接或索引,而且我认为此表中的条目不会超过几百个。在我看来这没问题,但我不知道是否有什么我错过/没有考虑的。 最佳答案 当然可以,因为您的RDBMS会让您这样做。但是,您是否应该这样做的问题的答案是不同的:在大多数情况下,应该不选择在您的数据库系统之外有意义的值成为主键。如果您知道该值在

mysql - 我可以使用 VARCHAR 作为主键吗?

我有一个用于存储优惠券/折扣的表,我想使用coupon_code列作为主键,它是一个VARCHAR。我的理由是,每张优惠券都有一个唯一的代码,我将运行的唯一命令是SELECT...FROM...WHEREcoupon_code='..'我不会进行任何连接或索引,而且我认为此表中的条目不会超过几百个。在我看来这没问题,但我不知道是否有什么我错过/没有考虑的。 最佳答案 当然可以,因为您的RDBMS会让您这样做。但是,您是否应该这样做的问题的答案是不同的:在大多数情况下,应该不选择在您的数据库系统之外有意义的值成为主键。如果您知道该值在

php - 为什么 SQL Server 选择查询截断 varchar 字符串?

设置我正在使用多个内存表来缓存我网站的数据。这是我的mac上的本地Web主机和linux上的开发服务器,在php5.5上使用mssqlphp库一个简化的表格如下:CacheIDINTNOTNULLCacheDataVARCHAR(MAX)我偶尔会插入几个大值。10,000多个字符。插入工作正常。一个简单的查询告诉我所有数据都在字段中:SELECTCacheID,LEN(CacheData)FROMCaches问题但是,当我实际选择数据时,cache列总是被截断为8192个字符,从而导致出现问题。简单选择:SELECTCacheDataFROMCachesWHERECacheID=10我

MySQL - 如何在不破坏现有数据的情况下增加数据库中现有列的 varchar 大小?

我有一列当前为varchar(100),我想将其设为10000。是不是就这么简单altertabletable_namesetcolumncol_namevarchar(10000);我害怕破坏现有数据。如果我运行这个查询我会好吗?还是我应该以另一种方式alter列?谢谢! 最佳答案 增加varchar列的大小是安全的。您不会损坏您的数据。如果这有助于您安心,请记住,您可以在更改数据结构之前始终运行数据库备份。顺便说一句,正确的语法是:ALTERTABLEtable_nameMODIFYcol_nameVARCHAR(10000)此