当我运行在Rails应用程序postgresql我的迁移我有以下通知 NOTICE: CREATE TABLE will create implicit sequence "notification_settings_id_seq" for serial column "notification_settings.id" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "notification_settings_pkey" for table "notification_settings" 我的迁移文件包含088_create_notification_settings.rb class CreateNotificationSettings < ActiveRecord::Migration def self.up create_table :notification_settings do |t| t.integer :user_id t.integer :notification_id t.boolean :notification_on t.boolean :outbound end end def self.down drop_table :notification_settings end end 我想知道 […]
我用这样的迁移创build了一个表: public function up() { Schema::create('despatch_discrepancies', function($table) { $table->increments('id')->unsigned(); $table->integer('pick_id')->unsigned(); $table->foreign('pick_id')->references('id')->on('picks'); $table->integer('pick_detail_id')->unsigned(); $table->foreign('pick_detail_id')->references('id')->on('pick_details'); $table->integer('original_qty')->unsigned(); $table->integer('shipped_qty')->unsigned(); }); } public function down() { Schema::drop('despatch_discrepancies'); } 我需要改变这个表,并删除外键引用&列pick_detail_id并添加一个新的名为sku后面的pick_id列的varchar列。 所以,我创build了另一个迁移,看起来像这样: public function up() { Schema::table('despatch_discrepancies', function($table) { $table->dropForeign('pick_detail_id'); $table->dropColumn('pick_detail_id'); $table->string('sku', 20)->after('pick_id'); }); } public function down() { Schema::table('despatch_discrepancies', function($table) { $table->integer('pick_detail_id')->unsigned(); $table->foreign('pick_detail_id')->references('id')->on('pick_details'); $table->dropColumn('sku'); }); } 当我运行这个迁移时,我得到以下错误: [照亮\数据库\ QueryException] SQLSTATE [HY000]:常规错误:1025将'./dev_iwms_reboot/despatch_discrepancies'重命名为'./dev_iwms_reboot/#sql2-67c-17c464'错误(错误:152)(SQL:alter […]
所以我现在正在快速迭代django应用程序,并且不断调整models.py。 在一两天的编程和testing过程中,我生成了几十个迁移文件。 有时候,我真的把这个模式分开了,完全重新做。 这导致迁移过程抱怨很多关于默认和空值等等。 如果可能的话,我只是想抓取所有的迁移工作,现在重新开始迁移,我终于知道自己在做什么了。 到目前为止,我的做法是: 删除__init__.py之外的所有迁移文件夹。 放入我的PostgreSQL控制台,然后执行: DELETE FROM south_migrationhistory WHERE app_name='my_app'; 而在PostgreSQL控制台中,删除所有与my_app关联的表。 重新运行./manage.py makemigrations my_app – 这会在我的migrations文件夹中生成一个0001_initial.py文件。 运行./manage migrate my_app – 我希望这个命令重新构build我的所有表,但是却说:“没有迁移到应用”。 是什么赋予了? 另外, south_migrationhistory数据库performance在仍然在使用中,我已经倾倒南部,并切换到Django 1.7? 谢谢。
我只是安装EF 4.3并试图通过迁移升级我的项目。 但是我正在尝试通过包pipe理器控制台执行add-migration initial到我的项目的问题。 现在抛出任何exceptionNo connection string named 'MyApplicationEntities' could be found in the application config file. 现在我的configuration已经完成了 <connectionStrings> <add name="MyApplicationEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=localhost;initial catalog=MyApplicationEntitiesDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> 我不确定这是EF 4.3中的一个错误,还是我做得不对。 我认为这个post已经解决了这个问题,但不是很完美。 任何人都有答案。 感谢桑吉。
我正在编写一个迁移,使表中的某些列现在可以为nullable 。 对于down函数,我当然想让这些列not nullable再not nullable 。 我查看了架构生成器文档 ,但看不到一个方法来做到这一点。 任何帮助,将不胜感激。
我想要 仅回滚: Rolled back: 2015_05_15_195423_alter_table_web_directories 我跑 php artisan migrate:rollback ,我的3个迁移正在回滚。 Rolled back: 2015_05_15_195423_alter_table_web_directories Rolled back: 2015_05_13_135240_create_web_directories_table Rolled back: 2015_05_13_134411_create_contacts_table 我删除 我的web_directories和我的contacts表无意中。 可悲的是,我从来不希望这样的事情发生,如果我只能回滚那个特定的事件,这场灾难就不会发生。 我希望 有人可以教我如何防止这种情况再次发生。 任何build议将不胜感激。
安装devise模型后,我得到了这个。 class DeviseCreateUsers < ActiveRecord::Migration def self.up create_table(:users) do |t| t.database_authenticatable :null => false t.recoverable t.rememberable t.trackable # t.encryptable # t.confirmable # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both # t.token_authenticatable t.timestamps end add_index :users, :email, :unique => true add_index :users, :reset_password_token, :unique => true # add_index :users, :confirmation_token, :unique => true # add_index :users, […]
我已经接近准备推出我的项目了。 我有大的计划,推出之后,数据库结构将发生变化 – 现有表中的新列以及新表,以及与现有和新模型的新关联。 我还没有触及Sequelize中的迁移,因为我只有testing数据,我不介意每次数据库更改时清除。 为此,目前我正在运行sync force: true当我的应用程序启动时,如果我已经改变了模型定义,则为sync force: true 。 这将删除所有的表,并从头开始。 我可以省略force选项,让它只创build新表。 但是,如果现有的改变,这是没有用的。 所以一旦我join迁移,事情是如何工作的? 显然,我不希望现有的表格(其中的数据)被清除,所以sync force: true是不可能的。 在其他应用程序中,我已经帮助开发(Laravel和其他框架)作为应用程序部署过程的一部分,我们运行migrate命令来运行任何未决的迁移。 但是在这些应用程序中,第一次迁移有一个骨架数据库,数据库处于开发初期的一段时间 – 第一个alpha版本或其他。 因此,即使是晚会的应用程序的一个实例,也可以通过按顺序运行所有的迁移来一口气加速。 我如何在Sequelize中产生这样的“第一次迁移”? 如果我没有,那么应用程序的新实例将不会有骨架数据库来运行迁移,或者它将在开始时运行同步,并将使数据库处于新状态新的表格等等,但是当它试图运行迁移时,它们是没有意义的,因为它们是用原始数据库和每一个连续的迭代来logging的。 我的思考过程:在每个阶段,初始数据库加上每个迁移顺序应该等于(加或减数据)在sync force: true运行时生成的数据库。 这是因为代码中的模型描述描述了数据库结构。 所以也许如果没有迁移表,我们只运行同步并将所有的迁移标记为已完成,即使它们没有运行。 这是我需要做什么(如何?),或者是Sequelize应该自己做这个,还是我咆哮错误的树? 如果我在正确的领域,肯定应该有一个很好的方式来自动生成大部分的迁移,给定旧模型(通过提交散列?甚至每个迁移可以绑定到一个提交?我承认我在想在一个不可移植的以git为中心的世界中)和新模型。 它可以对结构进行区分,并生成将数据库从旧到新的数据转换后所需的命令,然后开发人员可以进行必要的调整(删除/转换特定的数据等)。 当我用–init命令运行sequelize二进制文件时,它给了我一个空的迁移目录。 当我然后运行sequelize –migrate它使我没有任何内容的SequelizeMeta表,没有其他表。 显然不是,因为该二进制文件不知道如何引导我的应用程序并加载模型。 我肯定错过了什么。 TLDR:我如何设置我的应用程序及其迁移,以便实时应用程序的各种实例可以更新,以及没有传统启动数据库的全新应用程序?
我有一个Rails应用程序中的表(在schema.rb)看起来像: create_table "users", :force => true do |t| t.string "name", :null=>false t.string "address", :null=>false end 我想写一个rails迁移,以允许地址字段的空值。 即迁移后,表看起来像这样: create_table "users", :force => true do |t| t.string "name", :null=>false t.string "address" end 我需要做些什么来消除约束?
有谁知道我可以如何将SQL Azure数据库复制到我的开发机器? 我想停止在云中开发数据库,但这是获取生产数据的最好方法。 我复制我的生产数据库到一个新的开发数据库,但我想有相同的数据库本地。 有什么build议么?