我昨晚开始在Heroku上进行迁移,几个小时没有给我任何反馈,我最终停止了,因为不清楚系统是否做了什么.
从那以后,这一直是一场噩梦.我无法访问相关的数据库表heroku console,我无法迁移,回滚或使用pgbackups.
有帮助的是,pgbackups刚才给了我一个解释:
a transfer is currently in progress
Run Code Online (Sandbox Code Playgroud)
我假设这是我几小时前尝试执行的迁移.我怎样才能阻止 Heroku正在做的事情,这样我可以快速恢复并重新启动并运行?
所以我的迁移文件夹看起来像这样,因为我有几十个表,它保持组织和清洁:
migrations/
create_user_table.php
relations/
translations/
Run Code Online (Sandbox Code Playgroud)
我正在尝试刷新所有迁移和种子,但似乎我遇到了轻微的打嗝,我不知道工匠命令以递归方式运行迁移(即在relations和translations文件夹中运行迁移).
我尝试添加,--path="app/database/migrations/*"但它吐出一个错误.有谁知道这个解决方案?
目前我们使用mysql作为数据库,我们使用
@Generated Value(strategy = GenerationType.IDENTITY)
它在某些情况下完美地工作,我们需要将我们的数据库迁移到Oracle,那时它无法正常工作.如果有人知道这背后存在的实际差异以及它是如何工作的?
我有一个Parse应用程序,我正在尝试将我的应用程序的数据库迁移到mLab上的MongoDB实例.
我已经在Heroku上设置了一个Parse Server分支,我正在使用Heroku的mLab MongoDB附加组件.
我有一个名为mLab的数据库heroku_1ksph3jj,我应该可以使用以下模板连接到它:
mongodb://<dbuser>:<dbpassword>@ds047124.mlab.com:47124/heroku_1ksph3jj
但是,每次尝试都会返回:
Server returned error on SASL authentication step: Authentication failed.
我不确定要替换什么<dbuser>和<dbpassword>用什么.我有一个与我的数据库名称相同的数据库用户:heroku_1ksph3jjz所以我使用了它.我使用该用户的密码代替<dbpassword>.我应该在这里使用其他东西吗?
PostgreSQL具有内置于数据库中的枚举类型的概念.
如何实现一个包含在Rails 3中使用枚举类型的列的表?你需要以某种方式在PostgreSQL中定义枚举吗?你怎么能创建一个这样做的数据库迁移?
使用Rails 3.07,Ruby 1.92p180,PostgreSQL 8.3.
postgresql enums ruby-on-rails database-migration ruby-on-rails-3
我试图reserves在一次迁移中更改表中某列的最大长度.代码如下所示:
public function up()
{
//
Schema::table('reserves', function($table){
$table->string("mobile", 11)->change();
});
}
Run Code Online (Sandbox Code Playgroud)
但是当通过工匠运行迁移时,它会引发异常并说:
[RuntimeException]更改表"reserve"的列需要Doctrine DBAL; 安装"doctrine/dbal".
有什么问题,如何解决?
我单独看过Liquibase和Flyway,仅凭个别比较,Liquibase似乎是满足我们需求的更好工具.有些消息来源提到同时使用Liquibase和Flyway.Liquibase似乎拥有Flyway所拥有的一切,并且在回滚方面具有更大的灵活性.Flyway的主要优点似乎是不必使用XML,但Liquibase允许您在XML中指定SQL文件.
基本上,我还不清楚将Flyway和Liquibase一起使用的好处是仅仅Liquibase,如果有的话.也许有办法做到这一点我没有看到,即使Liquibase指的是有效的Flyway SQL文件,这两个工具都必须独立运行并且仍然有相同的陷阱,即使你可以在技术上使用任何一种工具.
在许多SQL版本中,有三种方法可以在每次插入行时将列隐式设置为NULL.这些是
columnname type NULL
columnname type DEFAULT NULL
columnname type NULL DEFAULT NULL
Run Code Online (Sandbox Code Playgroud)
即第一个设置NULL标志(与NOT NULL相反),第二个将NULL标志保留为默认值,第三个设置NULL标志并将隐式值设置为NULL.
我听说过在Microsoft SQL中,第二种变体并不完全相同,因为您还可以自定义表或模式的NULL标志的默认值.
但对于MySQL,我不相信有这样的功能.此外,在MySQL中,具有NULL标志的列(与NOT NULL列不同),如果没有显式值,则在插入时始终隐式设置为NULL,即使打开严格模式也是如此.这样就使所有这些列声明都相同.
在我的MySQL脚本中,对于每个NOT NULL列,我为我的应用程序中的某些插入中不希望设置的列指定DEFAULT值,以避免在启用严格模式时出现任何问题.因此,如果我选择第三种变体,我觉得它会更加对称,即使它是最冗长和明确的.是第三种变体的声明是常见的,还是第一种或第二种变异在其他人的脚本中更频繁地出现?
我正在考虑倾向于第二种方法,因为这是MySQL转储使用的别名,但我不确定这是一个好主意,因为它还在列声明的默认子句中将整数文字转储为字符串(单引号).
这个问题似乎比有解决方案的问题更有意见,但我也想知道任何我不知道的潜在问题.我可能会选择将来从MySQL迁移到PostgreSQL,我也可以使用这些专家的一些建议,例如,如果PostgreSQL区分这些情况,如MS-SQL.如果我做了任何不正确的假设,如果我错了,请纠正我.
我无法让Alembic使用db.Model(Flask-SQLAlchemy)而不是使用(Flask-SQLAlchemy)自动生成从更改到类的候选迁移Base.
我已修改env.py为创建我的Flask应用程序,导入所有相关模型,初始化数据库,然后运行迁移:
...
uri = 'mysql://user:password@host/dbname?charset=utf8'
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = uri
app.config['SQLALCHEMY_ECHO'] = True
db.init_app(app)
with app.test_request_context():
target_metadata = db.Model.metadata
config.set_main_option('sqlalchemy.url', uri)
if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()
...
Run Code Online (Sandbox Code Playgroud)
这种方法工作正常drop_all(),create_all()(例如,重新创建单元测试的测试分贝时),但似乎在这种情况下落空.自动生成的版本脚本始终具有空的升级和降级方法,例如,
def upgrade():
### commands auto generated by Alembic - please adjust! ###
pass
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
pass
### end Alembic commands ###
Run Code Online (Sandbox Code Playgroud)
我的更改包括重命名列,更改列定义等 …
sqlalchemy database-migration flask flask-sqlalchemy alembic
artisan migrate:reset.composer dump-autoload跟着跑了artisan dump-autoload我跑了artisan migrate,我一直收到这个错误:
PHP致命错误:在第297行的/vagrant/LaravelBackend/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php中找不到类'Foo'
我试过了:
composer dump-autoload和artisan dump-autoload(也使用artisan clear-compiled)artisan migrate:installcomposer install使用PHPStorm在我的项目中搜索Foo类.没找到任何东西.
我一直得到同样的错误.这是我第一次运行这个,因为我更新到4.2,如果这可能是相关的.还有什么我应该找的吗?
heroku ×2
laravel ×2
php ×2
postgresql ×2
alembic ×1
compare ×1
enums ×1
flask ×1
flyway ×1
hibernate ×1
java ×1
jpa ×1
laravel-4 ×1
laravel-5.2 ×1
liquibase ×1
migration ×1
mlab ×1
mongodb ×1
mysql ×1
spring-mvc ×1
sql ×1
sql-scripts ×1
sqlalchemy ×1